#include <iostream>
using namespace std;
const int N=32*1e5+2;const int M=1e5+4;int idx=2;int ans=0;
int a[M],nex[N][2],prefix[M];
void insert(int x)
{
int o=1;
for(int i=30;i>=0;i--)
{
int y=x>>i&1;
if(!nex[o][y])nex[o][y]=idx++;
o=nex[o][y];
}
}
int find(int x)
{
int o=1,res=0;
for(int i=30;i>=0;i--)
{
int y=x>>i&1;
if(nex[o][!y])o=nex[o][!y],res|=(1<<i);
else o=nex[o][y];
}
return res;
}
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)prefix[i]=prefix[i-1]^a[i];
//for(int i=1;i<=n;i++)insert(a[i]);
for(int i=1;i<=n;i++)
{
ans=max(ans,find(prefix[i]));
insert(prefix[i]);
}
cout<<ans;
return 0;
}