#include #pragma GCC optimize("O3") //#define int long long using namespace std; const int X = 1000001; int f[X]; map fact(int x){ map res; while(x > 1){ res[f[x]]++; x /= f[x]; } return res; } signed main(){ cin.tie(0); ios::sync_with_stdio(0); for(int i = 2; i < X; i++) f[i] = i; for(int i = 2; i < X; i++) if(f[i] == i){ for(int j = i+i; j < X; j += i){ if(f[j] == j) f[j] = i; } } int n; cin >> n; vector a(n); for(int &x : a) cin >> x; vector> primes(X); for (int i = 0; i < a.size(); ++i) { for (auto f : fact(a[i])) { int prime = f.first, count = f.second; for (int j = 0; j < count; ++j) primes[prime].push_back(i); } } int q; cin >> q; while (q--) { int l, r; cin >> l >> r, --l; int num; cin >> num; bool good = true; for (auto pr : fact(num)) { auto it = lower_bound(primes[pr.first].begin(), primes[pr.first].end(), l); auto it2 = lower_bound(primes[pr.first].begin(), primes[pr.first].end(), r); good &= (it2 - it) >= pr.second; } cout << (good ? "Yes" : "No") << '\n'; } }