def f(S=0): if Memo[S]!=-1: return Memo[S] for i in range(N): if S&(1<<i)==0: break X=0 for j in range(i+1,N): if S&(1<<j): continue X=max(X,(A[i]^A[j])+f(S|(1<<i)|(1<<j))) Memo[S]=X return X N=int(input()) A=list(map(int,input().split())) Memo=[-1]*(1<<N) Memo[-1]=0 print(f())