#include<bits/stdc++.h>↵
#define pb push_back↵
#define fin(i,arr,n) for(i=0;i<n;i++)cin>>arr[i]↵
#define fout(i,arr,n) for(i=0;i<n;i++)cout<<arr[i]<<" "↵
#define inf 9223372036854775807↵
#define vi vector<ll>↵
#define init ll n,m,a,i,b,j,k,t,x,y,z,tc,u,v,w↵
#define f(i,n) for(i=0;i<n;i++)↵
#define mem(a,x) memset(a,x,sizeof(a))↵
#define sortt(v) sort(v.begin(),v.end())↵
#define sitr(itr,st) for(itr=st.begin();itr!=st.end();itr++)↵
#define pr pair<ll,ll>↵
#define pi acos(-1.00)↵
#define mod 1000000007↵
using namespace std;↵
typedef long long ll;↵
struct node↵
{↵
bool endmark;↵
node* next[3];↵
node()↵
{↵
endmark=0;↵
ll i;↵
f(i,3)↵
next[i]=NULL;↵
}↵
}*root;↵
↵
void insert(string str)↵
{↵
ll sz=str.size();↵
node* curr=root;↵
ll i;↵
f(i,sz)↵
{↵
ll id=str[i]-'0';↵
if(curr->next[id]==NULL)↵
curr->next[id]=new node();↵
curr=curr->next[id];↵
↵
↵
}↵
curr->endmark=1;↵
↵
}↵
ll query(string str)↵
{↵
ll sz=str.size();↵
node* curr=root;↵
string tt="";↵
ll i;↵
f(i,sz)↵
{↵
ll id=str[i]-'0';↵
if(curr->next[!id])↵
tt+=char('0'+!id),curr=curr->next[!id];↵
else if(curr->next[id])↵
{↵
tt+=char('0'+id),curr=curr->next[id];↵
}↵
else tt+=str[i];↵
}↵
bitset<40>bit(tt);↵
return bit.to_ulong();↵
}↵
string binary(ll n)↵
{↵
ll u;↵
string tt="";↵
while(n)↵
{↵
u=n%2;↵
if(u==0)↵
tt="0"+tt;↵
else tt="1"+tt;↵
n/=2;↵
}↵
ll sz=tt.size();↵
for(ll i=0;i<40-sz;i++)↵
tt="0"+tt;↵
return tt;↵
}↵
int main()↵
{ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);↵
//freopen("read.txt","r",stdin);↵
//freopen("write.txt","w",stdout);↵
init;↵
root=new node();↵
ll arr[100005],pre1[100005],pre2[100005],ans=0;↵
//cout<<binary(12)<<endl;↵
cin>>n;↵
f(i,n)↵
{↵
cin>>arr[i];↵
if(i==0)↵
pre1[i]=arr[i];↵
else pre1[i]=pre1[i-1]^arr[i];↵
ans=max(ans,pre1[i]);↵
↵
}↵
for(i=n-1;i>=0;i--)↵
{↵
if(i==n-1)↵
pre2[i]=arr[i];↵
else pre2[i]=pre2[i+1]^arr[i];↵
ans=max(ans,pre2[i]);↵
}↵
for(i=n-2;i>=0;i--)↵
{↵
insert(binary(pre2[i+1]));↵
ans=max(ans,pre1[i]^query(binary(pre1[i])));↵
}↵
cout<<ans<<endl;↵
↵
↵
↵
↵
↵
↵
}↵
↵
↵
↵