#include
#include<bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node* left;
node* right;
node(int val){
data=val;
left=NULL;
right=NULL;
}
};
class trie{
node * root;
public:
trie(){
root=new node(-1);
}
void insert(int n){
node * temp=root;
for(int i=31;i>=0;iā){
int digit=(n>>i) & 1 ;
if(digit==0){
if(temp->left!=NULL){
temp=temp->left;
}
else{
temp->left=new node(0);
temp=temp->left;
}
}
else{
if(temp->right!=NULL){
temp=temp->right;
}
else{
temp->right=new node(0);
temp=temp->right;
}
}
}
}
int max_xor_helper (int x){ // helper function to find max xor
int curr_ans=0;
node * temp=root;
for(int i=31;i>=0;i--){
int digit=(x>>i)& 1;
if(digit==0){
// find bit 1
if(temp->right!=NULL){
temp=temp->right;
curr_ans+=(1<<i);
}
else{
temp=temp->left;
}
}
else{
if(temp->left!=NULL){
temp=temp->left;
curr_ans+=(1<<i);
}
else{
temp=temp->right;
}
}
}
return curr_ans;
}
int max_xor(int arr[],int n){
int max_xor=INT_MIN;
for(int i=0;i<n;i++){
insert(arr[i]);
int curr_xor=max_xor_helper(arr[i]);
max_xor=max(max_xor,curr_xor);
}
return max_xor;
}
};
int main() {
int n;
cin>>n;
int arr[n];
if(n==1){
cout<<0<<endl;
return 0;
}
for(int i=0;i<n;i++){
cin>>arr[i];
}
trie t;
cout<<t.max_xor(arr,n)<<endl;
}