插入:
void ins(){
for(int i=63;i>=0;i--){
if(x>>i&1){
if(d[i])x^=d[i];
else{
d[i]=x;
for(int j=0;j<i;j++)
if(d[j]&&(d[i]>>j&1)){
d[i]^=d[j];
}
for(int j=i+1;j<64;j++){
if(d[j]>>i&1){
d[j]^=d[i];
}
cnt++;
break;
}
}
}
}
查询第k小
auto k_th=[&](ll x)->ll{
if(cnt!=n)x--;
if(x>=(1LL<<p))return -1;
ll ans=0;
for(int i=0;i<p;i++){
if(x>>i&1)ans^=a[i];
}
return ans;
};