#include <bits/stdc++.h>
using namespace std;
int n;
long long A[100005], tmpxor, tmpxor2, maxi = 0;
int sz, nexastasfa[2][6000000], cnt[6000000];
void add(long long x, int delta) {
  bitset<50> B(x);
  string txt = B.to_string();
  int u = 0;
  for (int i = 0; i < txt.size(); i++) {
    int c = txt[i] - '0';
    if (nexastasfa[c][u] == 0) nexastasfa[c][u] = ++sz;
    u = nexastasfa[c][u];
    cnt[u] += delta;
  }
}
long long getmax(long long x) {
  bitset<50> B(x);
  string txt = B.to_string();
  int u = 0;
  long long res = 0;
  for (int i = 0; i < txt.size(); i++) {
    int c = txt[i] - '0';
    if (cnt[nexastasfa[c ^ 1][u]] > 0) {
      res += (1ll << (txt.size() - 1 - i));
      u = nexastasfa[c ^ 1][u];
    } else
      u = nexastasfa[c][u];
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> A[i];
  for (int i = 0; i < n; i++) tmpxor ^= A[i];
  add(0, 1);
  for (int i = n - 1; i >= 0; i--) {
    tmpxor ^= A[i];
    tmpxor2 ^= A[i];
    add(tmpxor2, 1);
    maxi = max(maxi, getmax(tmpxor));
  }
  cout << maxi;
}
