#include <bits/stdc++.h>
using namespace std;
const long long MAXN = (long long)2e5 + 10;
const long long K = 40;
long long link[2][K * MAXN];
long long sz = 0;
string convert(long long n) {
  string res;
  for (; n; n >>= 1) res += char(n % 2 + '0');
  while (res.size() < 40) res += "0";
  return string(res.rbegin(), res.rend());
}
void add(string s) {
  long long v = 0;
  for (long long i = 0; i < s.size(); i++) {
    long long x = s[i] - '0';
    if (link[x][v] == 0) {
      link[x][v] = ++sz;
    }
    v = link[x][v];
  }
}
long long get(string s) {
  long long res = 0;
  long long v = 0;
  for (long long i = 0; i < s.size(); i++) {
    long long x = 1 - (s[i] - '0');
    if (link[x][v] == 0) {
      x = 1 - x;
    }
    v = link[x][v];
    if (x) res += 1ll << (K - i - 1);
  }
  return res;
}
long long a[MAXN], xo[MAXN], n;
int32_t main() {
  ios::sync_with_stdio(0);
  cin >> n;
  long long ans = 0;
  long long x = 0;
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
    x ^= a[i];
    ans = max(ans, x);
    xo[i] = x;
  }
  x = 0;
  for (long long i = n; i > 1; i--) {
    x ^= a[i];
    add(convert(x));
    long long res = get(convert(xo[i - 1]));
    ans = max(ans, res ^ xo[i - 1]);
    ans = max(ans, x);
  }
  cout << ans << endl;
}
