//Bismillahir Rahmanir Rahim
//Shariful Islam(1804011)
//Chittagong University of Engineering & Technology
#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;






}



