#include <bits/stdc++.h>
using namespace std;
int trie[4200000][2];
long long x[100001];
int cnt = 1;
void add(long long x) {
  int u = 0;
  for (int i = 40; i >= 0; i--) {
    bool c = (x >> i) & 1;
    if (!trie[u][c]) trie[u][c] = cnt++;
    u = trie[u][c];
  }
}
long long ans;
long long query(long long x) {
  int u = 0;
  long long aux = 0;
  for (int i = 40; i >= 0; --i) {
    bool c = (x >> i) & 1;
    if (trie[u][!c]) {
      aux |= 1ll << i;
      u = trie[u][!c];
    } else
      u = trie[u][c];
  }
  return aux;
}
int main() {
  int n;
  scanf("%d", &n);
  long long sufix = 0;
  for (int i = 0; i < n; i++) {
    scanf("%lld", &x[i]);
    sufix ^= x[i];
  }
  long long prefix = 0;
  for (int i = 0; i < n + 1; i++) {
    add(prefix);
    ans = max(query(sufix), ans);
    prefix ^= x[i];
    sufix ^= x[i];
  }
  printf("%lld\n", ans);
}
