#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using ull = unsigned long long;

const int N = 70005;

int n, q;

int spf[N];
vector<int> primes;
ull P[N], H[N], mask[N];

void precompute() {
    mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
    for (int i = 2; i < N; i++) {
        if (!spf[i]) {
            spf[i] = i;
            primes.push_back(i);
            H[i] = rng();
        }
        for (int p : primes) {
            if (p > spf[i] || i * p >= N) break;
            spf[i * p] = p;
        }
    }
    for (int i = 2; i < N; i++) mask[i] = mask[i / spf[i]] ^ H[spf[i]];
}

void solve() {
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        P[i] = P[i - 1] ^ mask[x];
    }
    while (q--) {
        int l, r; cin >> l >> r;
        if (P[r] == P[l - 1]) cout << "YES\n";
        else cout << "NO\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    #define TASK "SEQCP"
    if (fopen(TASK".INP", "r")) {
        freopen(TASK".INP", "r", stdin);
        freopen(TASK".OUT", "w", stdout);
    }
    
    precompute();

    int tests = 1; // cin >> tests;
    while (tests--) solve();

    #ifdef LOCAL
    cerr << "\nTime elapsed: " << clock() << " ms.\n";
    #endif
    return 0;
};
