n=int(input())
a=list(map(int,input().split()))
t=0
te=0
tg=0
ans=0
d={}
for i in range(1,2**n):
g=i^(i//2)
l=len(bin(t^g))-2
te^=a[l-1]
ans^=(g*te)
t=g
print(ans)
# 这里把数字转化为格雷码,然后每个数要乘的异或和为上一个数的异或和再乘以一个数。
根据上一个数和下一个数的异或结果判断是哪一位不同,因为异或是自逆的,所以再乘以这个数就行了。我自己测试的时候没问题,但是子任务0显示错误,其他的要么超时要么超内存