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;
}
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;
}