#include <bits/stdc++.h>
using namespace std;
static const int B = 20;
struct PB {
int base[B]{};
int pos[B]{};
};
static inline void ins(PB &pb, int x, int idx) {
int v = x, p = idx;
for (int b = B - 1; b >= 0; --b) {
if (((v >> b) & 1) == 0)
continue;
if (pb.base[b] == 0) {
pb.base[b] = v;
pb.pos[b] = p;
return;
}
if (pb.pos[b] < p) {
swap(v, pb.base[b]);
swap(p, pb.pos[b]);
}
v ^= pb.base[b];
}
}
static inline int rk(const PB &pb, int l) {
int r = 0;
for (int b = 0; b < B; ++b)
if (pb.base[b] && pb.pos[b] >= l)
++r;
return r;
}
struct TB {
int v[B]{};
int piv[B];
int len = 0;
void clear() {
memset(v, 0, sizeof(v));
len = 0;
}
void ins(int x) {
for (int b = B - 1; b >= 0; --b) {
if (((x >> b) & 1) == 0)
continue;
if (v[b] == 0) {
v[b] = x;
return;
}
x ^= v[b];
}
}
void fin() {
len = 0;
for (int b = B - 1; b >= 0; --b)
if (v[b])
piv[len++] = b;
}
long long cnt_from(int idx, int offset, int K) const {
if (idx == len)
return (offset <= K) ? 1 : 0;
int b = piv[idx];
int half = 1 << (len - idx - 1);
int kb = (K >> b) & 1;
int ob = (offset >> b) & 1;
if (kb == 0) {
int next = ob ? (offset ^ v[b]) : offset;
return cnt_from(idx + 1, next, K);
} else {
int next = ob ? offset : (offset ^ v[b]);
return (long long)half + cnt_from(idx + 1, next, K);
}
}
long long cnt_leq(int K) const {
if (K < 0)
return 0;
return cnt_from(0, 0, K);
}
int kth(long long t) const {
int offset = 0;
for (int idx = 0; idx < len; ++idx) {
int b = piv[idx];
int half = 1 << (len - idx - 1);
int ob = (offset >> b) & 1;
if (t <= half) {
if (ob)
offset ^= v[b];
} else {
t -= half;
if (!ob)
offset ^= v[b];
}
}
return offset;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n, q;
cin >> n >> q;
vector<int> a(n + 1);
for (int i = 1; i <= n; ++i)
cin >> a[i];
vector<PB> pref(n + 1);
for (int i = 1; i <= n; ++i) {
pref[i] = pref[i - 1];
ins(pref[i], a[i], i);
}
auto build = [&](int l, int e) {
TB tb;
tb.clear();
const PB &pb = pref[e];
for (int b = B - 1; b >= 0; --b) {
if (pb.base[b] && pb.pos[b] >= l) {
tb.ins(pb.base[b]);
}
}
tb.fin();
return tb;
};
auto firstpos = [&](int l, int r, int need_rank) {
int lo = l, hi = r;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (rk(pref[mid], l) >= need_rank)
hi = mid;
else
lo = mid + 1;
}
return lo;
};
while (q--) {
int l, r;
cin >> l >> r;
int d = rk(pref[r], l);
vector<int> s(d + 1);
int last = l;
for (int k = 1; k <= d; ++k) {
int sk = firstpos(l, r, k);
s[k] = sk;
last = sk;
}
bool ok = true;
int prev = -1;
int seg_start = l;
for (int k = 0; k <= d; ++k) {
int seg_end = (k < d ? s[k + 1] - 1 : r);
int L = seg_end - seg_start + 1;
if (L <= 0)
continue;
TB tb = build(l, seg_end);
int sz = 1 << tb.len;
long long c = tb.cnt_leq(prev);
if (c + L > sz) {
ok = false;
break;
}
int t = (int)(c + L);
prev = tb.kth(t);
seg_start = seg_end + 1;
}
cout << (ok ? "YES\n" : "NO\n");
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdGF0aWMgY29uc3QgaW50IEIgPSAyMDsKCnN0cnVjdCBQQiB7CiAgaW50IGJhc2VbQl17fTsKICBpbnQgcG9zW0Jde307Cn07CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5zKFBCICZwYiwgaW50IHgsIGludCBpZHgpIHsKICBpbnQgdiA9IHgsIHAgPSBpZHg7CiAgZm9yIChpbnQgYiA9IEIgLSAxOyBiID49IDA7IC0tYikgewogICAgaWYgKCgodiA+PiBiKSAmIDEpID09IDApCiAgICAgIGNvbnRpbnVlOwogICAgaWYgKHBiLmJhc2VbYl0gPT0gMCkgewogICAgICBwYi5iYXNlW2JdID0gdjsKICAgICAgcGIucG9zW2JdID0gcDsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHBiLnBvc1tiXSA8IHApIHsKICAgICAgc3dhcCh2LCBwYi5iYXNlW2JdKTsKICAgICAgc3dhcChwLCBwYi5wb3NbYl0pOwogICAgfQogICAgdiBePSBwYi5iYXNlW2JdOwogIH0KfQoKc3RhdGljIGlubGluZSBpbnQgcmsoY29uc3QgUEIgJnBiLCBpbnQgbCkgewogIGludCByID0gMDsKICBmb3IgKGludCBiID0gMDsgYiA8IEI7ICsrYikKICAgIGlmIChwYi5iYXNlW2JdICYmIHBiLnBvc1tiXSA+PSBsKQogICAgICArK3I7CiAgcmV0dXJuIHI7Cn0KCnN0cnVjdCBUQiB7CiAgaW50IHZbQl17fTsKICBpbnQgcGl2W0JdOwogIGludCBsZW4gPSAwOwoKICB2b2lkIGNsZWFyKCkgewogICAgbWVtc2V0KHYsIDAsIHNpemVvZih2KSk7CiAgICBsZW4gPSAwOwogIH0KCiAgdm9pZCBpbnMoaW50IHgpIHsKICAgIGZvciAoaW50IGIgPSBCIC0gMTsgYiA+PSAwOyAtLWIpIHsKICAgICAgaWYgKCgoeCA+PiBiKSAmIDEpID09IDApCiAgICAgICAgY29udGludWU7CiAgICAgIGlmICh2W2JdID09IDApIHsKICAgICAgICB2W2JdID0geDsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgeCBePSB2W2JdOwogICAgfQogIH0KCiAgdm9pZCBmaW4oKSB7CiAgICBsZW4gPSAwOwogICAgZm9yIChpbnQgYiA9IEIgLSAxOyBiID49IDA7IC0tYikKICAgICAgaWYgKHZbYl0pCiAgICAgICAgcGl2W2xlbisrXSA9IGI7CiAgfQoKICBsb25nIGxvbmcgY250X2Zyb20oaW50IGlkeCwgaW50IG9mZnNldCwgaW50IEspIGNvbnN0IHsKICAgIGlmIChpZHggPT0gbGVuKQogICAgICByZXR1cm4gKG9mZnNldCA8PSBLKSA/IDEgOiAwOwogICAgaW50IGIgPSBwaXZbaWR4XTsKICAgIGludCBoYWxmID0gMSA8PCAobGVuIC0gaWR4IC0gMSk7CiAgICBpbnQga2IgPSAoSyA+PiBiKSAmIDE7CiAgICBpbnQgb2IgPSAob2Zmc2V0ID4+IGIpICYgMTsKICAgIGlmIChrYiA9PSAwKSB7CiAgICAgIGludCBuZXh0ID0gb2IgPyAob2Zmc2V0IF4gdltiXSkgOiBvZmZzZXQ7CiAgICAgIHJldHVybiBjbnRfZnJvbShpZHggKyAxLCBuZXh0LCBLKTsKICAgIH0gZWxzZSB7CiAgICAgIGludCBuZXh0ID0gb2IgPyBvZmZzZXQgOiAob2Zmc2V0IF4gdltiXSk7CiAgICAgIHJldHVybiAobG9uZyBsb25nKWhhbGYgKyBjbnRfZnJvbShpZHggKyAxLCBuZXh0LCBLKTsKICAgIH0KICB9CgogIGxvbmcgbG9uZyBjbnRfbGVxKGludCBLKSBjb25zdCB7CiAgICBpZiAoSyA8IDApCiAgICAgIHJldHVybiAwOwogICAgcmV0dXJuIGNudF9mcm9tKDAsIDAsIEspOwogIH0KCiAgaW50IGt0aChsb25nIGxvbmcgdCkgY29uc3QgewogICAgaW50IG9mZnNldCA9IDA7CiAgICBmb3IgKGludCBpZHggPSAwOyBpZHggPCBsZW47ICsraWR4KSB7CiAgICAgIGludCBiID0gcGl2W2lkeF07CiAgICAgIGludCBoYWxmID0gMSA8PCAobGVuIC0gaWR4IC0gMSk7CiAgICAgIGludCBvYiA9IChvZmZzZXQgPj4gYikgJiAxOwogICAgICBpZiAodCA8PSBoYWxmKSB7CiAgICAgICAgaWYgKG9iKQogICAgICAgICAgb2Zmc2V0IF49IHZbYl07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdCAtPSBoYWxmOwogICAgICAgIGlmICghb2IpCiAgICAgICAgICBvZmZzZXQgXj0gdltiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIG9mZnNldDsKICB9Cn07CgppbnQgbWFpbigpIHsKICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZShudWxscHRyKTsKCiAgaW50IHQ7CiAgY2luID4+IHQ7CiAgd2hpbGUgKHQtLSkgewogICAgaW50IG4sIHE7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgdmVjdG9yPGludD4gYShuICsgMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgIGNpbiA+PiBhW2ldOwoKICAgIHZlY3RvcjxQQj4gcHJlZihuICsgMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgcHJlZltpXSA9IHByZWZbaSAtIDFdOwogICAgICBpbnMocHJlZltpXSwgYVtpXSwgaSk7CiAgICB9CgogICAgYXV0byBidWlsZCA9IFsmXShpbnQgbCwgaW50IGUpIHsKICAgICAgVEIgdGI7CiAgICAgIHRiLmNsZWFyKCk7CiAgICAgIGNvbnN0IFBCICZwYiA9IHByZWZbZV07CiAgICAgIGZvciAoaW50IGIgPSBCIC0gMTsgYiA+PSAwOyAtLWIpIHsKICAgICAgICBpZiAocGIuYmFzZVtiXSAmJiBwYi5wb3NbYl0gPj0gbCkgewogICAgICAgICAgdGIuaW5zKHBiLmJhc2VbYl0pOwogICAgICAgIH0KICAgICAgfQogICAgICB0Yi5maW4oKTsKICAgICAgcmV0dXJuIHRiOwogICAgfTsKCiAgICBhdXRvIGZpcnN0cG9zID0gWyZdKGludCBsLCBpbnQgciwgaW50IG5lZWRfcmFuaykgewogICAgICBpbnQgbG8gPSBsLCBoaSA9IHI7CiAgICAgIHdoaWxlIChsbyA8IGhpKSB7CiAgICAgICAgaW50IG1pZCA9IChsbyArIGhpKSA+PiAxOwogICAgICAgIGlmIChyayhwcmVmW21pZF0sIGwpID49IG5lZWRfcmFuaykKICAgICAgICAgIGhpID0gbWlkOwogICAgICAgIGVsc2UKICAgICAgICAgIGxvID0gbWlkICsgMTsKICAgICAgfQogICAgICByZXR1cm4gbG87CiAgICB9OwoKICAgIHdoaWxlIChxLS0pIHsKICAgICAgaW50IGwsIHI7CiAgICAgIGNpbiA+PiBsID4+IHI7CgogICAgICBpbnQgZCA9IHJrKHByZWZbcl0sIGwpOwoKICAgICAgdmVjdG9yPGludD4gcyhkICsgMSk7CiAgICAgIGludCBsYXN0ID0gbDsKICAgICAgZm9yIChpbnQgayA9IDE7IGsgPD0gZDsgKytrKSB7CiAgICAgICAgaW50IHNrID0gZmlyc3Rwb3MobCwgciwgayk7CiAgICAgICAgc1trXSA9IHNrOwogICAgICAgIGxhc3QgPSBzazsKICAgICAgfQoKICAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgIGludCBwcmV2ID0gLTE7CiAgICAgIGludCBzZWdfc3RhcnQgPSBsOwoKICAgICAgZm9yIChpbnQgayA9IDA7IGsgPD0gZDsgKytrKSB7CiAgICAgICAgaW50IHNlZ19lbmQgPSAoayA8IGQgPyBzW2sgKyAxXSAtIDEgOiByKTsKICAgICAgICBpbnQgTCA9IHNlZ19lbmQgLSBzZWdfc3RhcnQgKyAxOwogICAgICAgIGlmIChMIDw9IDApCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgVEIgdGIgPSBidWlsZChsLCBzZWdfZW5kKTsKICAgICAgICBpbnQgc3ogPSAxIDw8IHRiLmxlbjsKICAgICAgICBsb25nIGxvbmcgYyA9IHRiLmNudF9sZXEocHJldik7CiAgICAgICAgaWYgKGMgKyBMID4gc3opIHsKICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaW50IHQgPSAoaW50KShjICsgTCk7CiAgICAgICAgcHJldiA9IHRiLmt0aCh0KTsKCiAgICAgICAgc2VnX3N0YXJ0ID0gc2VnX2VuZCArIDE7CiAgICAgIH0KCiAgICAgIGNvdXQgPDwgKG9rID8gIllFU1xuIiA6ICJOT1xuIik7CiAgICB9CiAgfQogIHJldHVybiAwOwp9Cg==