#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for (int i= a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (x).size()
#define int ll
#define F first
#define S second
#define PB push_back
#define MP make_pair
typedef long long int;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define endl '\n'
#define inf 3000000000000000000
#define random rand()^(rand()<<15)
mt19937 rnd(time(nullptr));

vector<ll> find_primes(ll max) {
    vector<bool> ok(max + 1, true);
    vi res;

    for (ll i = 2; i <= max; i++) {
        if (!ok[i])
            continue;

        res.push_back(i);

        for (ll v = i; v <= max; v += i)
            ok[v] = false;
    }

    return res;
}

vi primes = find_primes(1000);

vector<pii> factor(ll value) {
    vector<pii> res;

    for (ll p : primes) {
        ll c = 0;

        while (value % p == 0) {
            c++;
            value /= p;
        }

        if (c != 0)
            res.push_back({p, c});
    }

    if (value > 1)
        res.push_back({value, 1});

    return res;
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);

    unordered_map<ll, vi> places;

    ll length;
    cin >> length;

    for (ll i = 0; i < length; i++) {
        ll value;
        cin >> value;

        auto factors = factor(value);

        for (pii fact : factors) {
            rep(j, 0, fact.S)
                places[fact.F].push_back(i);
        }
    }

    ll queries;
    cin >> queries;

    for (ll q = 0; q < queries; q++) {
        ll s, e, value;
        cin >> s >> e >> value;

        s--;
        e--;
        auto factors = factor(value);

        bool ok = true;

        for (pii fact : factors) {
            ll p = fact.F;
            ll count = std::lower_bound(all(places[p]), e + 1) - std::lower_bound(all(places[p]), s);

            if (count < fact.S)
                ok = false;
        }

        cout << (ok ? "Yes" : "No") << endl;
    }

    return 0;
}