struct basis{
ll a[64];
void reset(){memset(a,0,sizeof(a));}
void insert(ll x){
for(int i=63;i>=0;i--){
if(x&(1ll<<i)){
if(!a[i]){
a[i]=x;break;
}
x^=a[i];
}
}
}
bool exist(ll x){
for(int i=63;i>=0;i--){
if(x&(1ll<<i)){
if(a[i])x^=a[i];
else {return 0;}
}
}
return 1;
}
}t;