#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b) ; ++i) #define all(x) std::begin(x), std::end(x) #define sz(x) ((int) x.size()) typedef long long ll; //#define int ll typedef pair pii; typedef vector vi; const ll mod = 1'000'000'007; ll modpow(ll b, ll e) { ll ans = 1; for (; e; b = b * b % mod, e /= 2) { if (e & 1) ans = ans * b % mod; } return ans; } vector> prefix_prod(100'000 + 5); int main() { cin.tie(0)->sync_with_stdio(0); int limit = 1000'000 + 10000; vector is_prime(limit + 1000); for(int i = 2; i < limit; i++) { if(is_prime[i]!=0) continue; for(int j = 2*i; j < limit; j += i) { is_prime[j] = i; } } int N; cin >> N; for(int i = 1; i <= N; i++) { int a; cin >> a; prefix_prod[i] = prefix_prod[i-1]; while(is_prime[a] != 0) { prefix_prod[i][is_prime[a]]++; a /= is_prime[a]; } prefix_prod[i][a]++; } int Q; cin >> Q; rep(i, 0, Q) { int ta, tb, k; cin >> ta >> tb >> k; unordered_map decom; while(is_prime[k] != 0) { decom[is_prime[k]]++; k /= is_prime[k]; } decom[k]++; bool corr = true; for(auto [prime,count]:decom) { if(prime != 1 && count > prefix_prod[tb][prime] - prefix_prod[ta-1][prime]) { corr = false; break; } } cout << (corr?"Yes":"No") << endl; } return 0; }