import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; class Main { public static void main(String[] args) { new Main().run(); } void run() { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] A = new int[N]; for (int i = 0; i < N; ++i) A[i] = sc.nextInt(); int Q = sc.nextInt(); ArrayList primes = new ArrayList<>(); out: for (int i = 2; i <= 2 * 1000; ++i) { for (int j = 2; j * j <= i; ++j) { if (i % j == 0) continue out; } primes.add(i); } int[] zero = new int[N]; int[][] cnt = new int[N][primes.size()]; for (int i = 0; i < N; ++i) { zero[i] = (i > 0 ? zero[i - 1] : 0) + (A[i] == 0 ? 1 : 0); for (int j = 0; j < primes.size(); ++j) { if (i > 0) cnt[i][j] = cnt[i - 1][j]; while (A[i] > 0 && A[i] % primes.get(j) == 0) { cnt[i][j]++; A[i] /= primes.get(j); } } } PrintWriter pw = new PrintWriter(System.out); for (int t = 0; t < Q; ++t) { int P = sc.nextInt(); int L = sc.nextInt(); int R = sc.nextInt(); --L; --R; boolean ok = true; int[] cnt2 = new int[primes.size()]; for (int i = 0; i < primes.size(); ++i) { while (P % primes.get(i) == 0) { cnt2[i]++; P /= primes.get(i); } ok &= cnt[R][i] - (L > 0 ? cnt[L - 1][i] : 0) >= cnt2[i]; } ok &= P == 1; ok |= zero[R] - (L > 0 ? zero[L - 1] : 0) > 0; pw.println(ok ? "Yes" : "NO"); } pw.close(); } void tr(Object... objects) { System.out.println(Arrays.deepToString(objects)); } }