#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i = 0; i < (int)(n); i++)
typedef long long  ll;
const int INF = 1000100;
const ll mod=1e9+7;
typedef pair<int,int> P;
const double pi=acos(-1);
int main() {
  int n;
  cin>>n;
  vector<ll> a(n);
  rep(i,n)cin>>a[i];
  ll ans=1e17;
  rep(i,1<<(n-1)){
      ll o=a[0];
      ll x=0;
      rep(j,n-1){
          if(i>>j&1){
              o|=a[j+1];
          }
          else {
              x^=o;
              o=a[j+1];
          }
      }
      x^=o;
      ans=min(ans,x);
  }
  cout<<ans<<endl;
}
#include <bits/stdc++.h>
using namespace std;

int main(){
  int N;
  cin >> N;
  vector<int> A(N);
  for(int i=0;i<N;i++) cin >> A[i];
  vector<int> pow2(31,1);
  for(int i=1;i<=30;i++) pow2[i] = pow2[i-1] * 2;
  
  int ans = pow2[30];
  for(int i=0;i<(1<<(N-1));i++){
    bitset<20> B(i);
    vector<int> XOR(30,0), nowOR(30,0);
    for(int j=0;j<N;j++){
      for(int k=0;k<30;k++){
        if((A[j]/pow2[k])%2 == 1) nowOR[k] = 1;
      }
      if(B.test(j)){
        for(int k=0;k<30;k++){
          if((nowOR[k]+XOR[k])%2==1) XOR[k] = 1;
          else XOR[k] = 0;
          nowOR[k] = 0;
        }
      }
    }
    for(int k=0;k<30;k++){
      if((nowOR[k]+XOR[k])%2==1) XOR[k] = 1;
      else XOR[k] = 0;
      nowOR[k] = 0;
    }
    int score = 0;
    for(int k=0;k<30;k++){
      if(XOR[k]==1) score += pow2[k];
    }
    ans = min(ans,score);
  }
  
  cout << ans << endl;
  return 0;
}
