void insert(ll x) { for(int i=50;i>=0;--i) { if(x&((ll)1<<i)) { if(!a[i]) { a[i]=x; break; } else x^=a[i]; } } } ll query_max() { ll ans=0; for(int i=50;i>=0;--i) if((ans^a[i])>ans) ans^=a[i]; return ans; }