#include 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 pii; typedef vector vi; #define endl '\n' #define inf 3000000000000000000 #define random rand()^(rand()<<15) mt19937 rnd(time(nullptr)); vector find_primes(ll max) { vector 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 factor(ll value) { vector 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 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; }