#include<bits/stdc++.h>
const int maxn=1e6;
inline const void read(int &a)
{
a=0;
char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')
{
a=(a<<1)+(a<<3)+c-'0';
c=getchar();
}
}
inline const void write(int a)
{
if(a>9)write(a/10);
putchar(a%10+'0');
}
inline const int max(int a,int b)
{
if(a>b)return a;
else return b;
}
inline const int min(int a,int b)
{
if(a<b)return a;
else return b;
}
int n,d=0;
int point[maxn],next[maxn],to[maxn],len[maxn];//len指这条边的权值,实际上就是指向的那一位的大小,即时这对男女的互相倾心值。
int exboy[maxn],exgirl[maxn],boy[maxn],girl[maxn],three[maxn];//exboy和exgirl表示男孩女孩对暗恋者的期望值。boy和girl分别指这个男女生现任女男友,three是女生离做小三的距离,也就是要被某个男生作为首选,最少还差多少与他的倾心值。
bool visboy[maxn],visgirl[maxn];//记录是否已经参与本次违背伦理的换男女友活动
const bool found(int p)//判断是否能够为这个男生牵线,并返回是否成功
{
visboy[p]=true;//这个男生卷进来男生
int side=point[p];
while(side)//遍历他喜欢的每一个女生
{
if(!visgirl[to[side]])//每个女生只被抢一次,否则会死循环
{
if(exboy[p]+exgirl[to[side]]==len[side])//假设这个女孩能作为首选
{
visgirl[to[side]]=true;//纯洁的女孩也被卷了进来
if(!girl[to[side]]||found(girl[to[side]]))//如果女孩没有男友或者他的男友能另找女孩,就在一起!
{
girl[to[side]]=p;//女生的男朋友
boy[p]=to[side];//男生的女朋友
return true;//共同甜蜜的宣布牵手成功
}
}
else//这个女孩不是首选
three[to[side]]=min(three[to[side]],exboy[p]+exgirl[to[side]]-len[side]);//这个女孩暗下决心,还要多少倾心值才能成为首选
}
side=next[side];
}
return false;
}
void solve()
{
for(int i=1;i<=n;i++)
{
memset(three,0x7f,sizeof(three));
while(true)
{
memset(visgirl,false,sizeof(visgirl));
memset(visboy,false,sizeof(visboy));
if(found(i))break;
int minus=three[0];
for(int j=1;j<=32;j++)if(!visgirl[j])minus=min(three[j],minus);
if(minus==three[0])break;
for(int j=1;j<=n;j++)if(visboy[j])exboy[j]-=minus;
for(int j=1;j<=32;j++)
if(visgirl[j])exgirl[j]+=minus;
}
}
}
inline const void add(int a,int b,int c)
{
next[++d]=point[a];
to[d]=b;
point[a]=d;
len[d]=c;
exboy[a]=max(exboy[a],len[d]);
}
int main()
{
memset(exboy,0,sizeof(exboy));
memset(exgirl,0,sizeof(exgirl));
memset(girl,0,sizeof(girl));
memset(boy,0,sizeof(boy));
read(n);
int k;
for(int i=1;i<=n;i++)
{
read(k);
for(int j=1;j<=32;j++)
if((1<<j-1)&k)add(i,j,1<<j-1);
}
solve();
int ans=0;
for(int i=1;i<=n;i++)
{
if(boy[i])ans+=1<<boy[i]-1;
else ans^=1;
}
write(ans);
return 0;
}