水题;前缀维护异或和,k=2 区间异或和为 0,k=3 二分找两个隔板位置即可;
键值对与迭代器的灵活使用;
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int max_n=2e5+5;
int n,q,a[max_n];
map<int,vector<int>>mp;
void solve()
{
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]^=a[i-1];
mp[a[i]].push_back(i);
}
while(q--){
int l,r;cin>>l>>r;
if(a[r]==a[l-1]){
cout<<"YES"<<endl;
continue;
}
auto x=lower_bound(mp[a[r]].begin(),mp[a[r]].end(),l);
if(x==mp[a[r]].end()||*x>=r){cout<<"NO"<<endl;continue;}
auto y=lower_bound(mp[a[l-1]].begin(),mp[a[l-1]].end(),*x);
if(y==mp[a[l-1]].end()||*y>=r){cout<<"NO"<<endl;continue;}
cout<<"YES"<<endl;
}
mp.clear();
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int _t;cin>>_t;
while(_t--){
solve();
}
return 0;
}