#include using namespace std; typedef long long ll; #define F first #define S second #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() const int INF = 1e9; const ll LLINF = 4e18; const double EPS = 1e-9; #define int ll const int MAX = 1e6 + 10; void solve() { int n; cin >> n; vector is_composite(MAX, 0); is_composite[0] = 0; is_composite[1] = 0; for (int i = 2; i < MAX; i++) { if (!is_composite[i]) { for (int j = i * i; j < MAX; j += i) { is_composite[j] = i; } } } vector> prod_a(n); int a; cin >> a; while (is_composite[a]){ ++prod_a[1][is_composite[a]]; a /= is_composite[a]; } ++prod_a[1][a]; for(int i = 2; i <= n; ++i){ prod_a[i] = prod_a[i-1]; cin >> a; while (is_composite[a]){ ++prod_a[i][is_composite[a]]; a /= is_composite[a]; } ++prod_a[i][a]; } int q; cin >> q; while (q--){ int s, t,k; cin >> s >> t>> k; map tmp = prod_a[t]; for (const auto & i: prod_a[s]){ tmp[i.first] -= i.S; } map factors; while (is_composite[k]){ ++factors[is_composite[k]]; k /= is_composite[k]; } ++factors[a]; bool correct = true; for (const auto & i: factors){ if (!(tmp[i.F] >= i.S)) correct = false; } cout << (correct ? "Yes" : "No") << endl; } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); }