using namespace std;
const long long inf=-1e9;
long long dis[8200],book[8210],n,m,c,x[5545];
long long ans=0,ans1=0;
struct node
{
long long num,id;
bool friend operator<(node jl,node jj)
{
return jl.num<jj.num;
}
};
struct node1
{
long long to,z;
};
priority_queue <node> q;
vector<node1> a[2020];
void prim(long long o)
{
for(long long i=1;i<=n;i++)
{
book[i]=0;
dis[i]=inf;
}
dis[o]=0;
node pr;
pr.id=o;
pr.num=0;
q.push(pr);
while(!q.empty())
{
long long w=q.top().id;
q.pop();
if(book[w]!=0)
continue;
book[w]=1;
for(long long i=0;i<a[w].size();i++)
{
long long v=a[w][i].to;
if(dis[v]<a[w][i].z&&book[v]==0)
{
dis[v]=a[w][i].z;
node prim;
prim.id=v;
prim.num=dis[v];
q.push(prim);
}
}
}
}
int main()
{
cin>>n;
for(long long i=1;i<=n;i++)
cin>>x[i];
for(long long i=1;i<=n;i++)
{
for(long long j=1;j<=n;j++)
{
if(x[i]!=x[j])
{
long long le=x[i]^x[j];
// cout<<le<<" ";
node1 tt,tttt;
tt.to=j;
tt.z=le;
tttt.to=i;
tttt.z=le;
a[i].push_back(tt);
a[j].push_back(tttt);
}
}
}
prim(1);
for(long long i=1;i<=n;i++)
ans+=dis[i];
cout<<ans;
}