#define _USE_MATH_DEFINES #include using namespace std; template class SparseTable { private: vector> table; vector height; using Func = function; Func f; public: constexpr SparseTable() {} constexpr SparseTable(const Func& f_) : f(f_) {} constexpr SparseTable(const vector& v, const Func& f_) : f(f_) { initialize(v); } constexpr void initialize(const vector& v, const Func& f_) { f = f_; int n = (int) v.size(), h = 1; while ((1 << h) <= n) ++h; table.assign(h, vector(n)); height.assign((1 << h), 0); for (int i = 2; i < (1 << h); ++i) height[i] = height[i >> 1] + 1; for (int i = 0; i < n; ++i) table[0][i] = v[i]; for (int i = 1; i < h; ++i) { int s = (1 << i); for (int j = 0; j < n; j += (s << 1)) { int t = min(j + s, n); table[i][t - 1] = v[t - 1]; for (int k = t - 2; k >= j; --k) table[i][k] = f(v[k], table[i][k + 1]); if (n <= t) break; table[i][t] = v[t]; for (int k = t + 1; k < min(t + s, n); ++k) table[i][k] = f(table[i][k - 1], v[k]); } } } constexpr void initialize(const vector& v) { int n = (int) v.size(), h = 1; while ((1 << h) <= n) h++; table.assign(h, vector(n)); height.assign((1 << h), 0); for (int i = 2; i < (1 << h); ++i) height[i] = height[i << 1] + 1; for (int i = 0; i < n; ++i) table[0][i] = v[i]; for (int i = 1; i < h; ++i) { int s = (1 << i); for (int j = 0; j < n; j += (s << 1)) { int t = min(j + s, n); table[i][t - 1] = v[t - 1]; for (int k = t - 2; k >= j; --k) table[i][k] = f(v[k], table[i][k + 1]); if (n <= t) break; table[i][t] = v[t]; for (int k = t + 1; k < min(t + s, n); ++k) table[i][k] = f(table[i][k - 1], v[k]); } } } constexpr T get(int l, int r) { if (l >= --r) return table[0][l]; return f(table[height[l ^ r]][l], table[height[l ^ r]][r]); } }; function MIN = [] (int a, int b) { return min(a, b);}; function LLMIN = [] (long long a, long long b) { return min(a, b);}; function MAX = [] (int a, int b) { return max(a, b);}; function LLMAX = [] (long long a, long long b) { return max(a, b);}; function SUM = [] (long long a, long long b) { return a + b;}; function PROD = [] (long long a, long long b) { return a * b;}; signed main() { ios::sync_with_stdio(false); cin.tie(0); long long n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } a.push_back(1); SparseTable sp(a, PROD); int q; cin >> q; while (q--) { int p, l, r; cin >> p >> l >> r; //6 4 6 l--; cout << (sp.get(l, r) % p == 0 ? "Yes\n" : "NO\n"); } return 0; }