太菜了qwq
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mxn=3e5+10;
int T,a[mxn],s[mxn],pos[mxn],cnt,n,q;
map<int,int>mp;
vector<int>v[mxn];
bool pd
signed main(){
scanf("%lld",&T);
while(T--){
for(int i=1;i<=cnt;i++)v[i].clear();
mp.clear();
cnt=0;
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int i=1;i<=n;i++){
s[i]=s[i-1]^a[i];
if(!mp[s[i]])mp[s[i]]=++cnt;
v[mp[s[i]]].push_back(i);
pos[i]=v[mp[s[i]]].size();
}
while(q--){
int l,r;
scanf("%lld%lld",&l,&r);
if(s[r]==s[l-1])puts("YES");
else if(pos[r]>1){
int val=mp[s[r]];
int L=0,R=v[val].size()-1,ans;
while(L<=R){
int mid=(L+R)>>1;
if(v[val][mid]>=l)ans=mid,R=mid-1;
else L=mid+1;
}
int p=v[val][ans];
if(r-p>1ll){
if(!mp[0]){
puts("NO");
continue;
}
int va=mp[0];
if(lower_bound(v[va].begin(),v[va].end(),p)==v[va].end()){
puts("NO");
continue;
}
int pp=v[va][lower_bound(v[va].begin(),v[va].end(),p)-v[va].begin()];
if(pp<r)puts("YES");
else puts("NO");
}
else puts("NO");
}
else puts("NO");
}
puts("");
}
return 0;
}