N, *W = map(int, open(0).read().split()); B = 2**N-1 def ok(Z): M = (1<<2*Z+1)-1; D = [0]*(B+1); D[0] = 1<>v))&M; x ^= u D[b] = r return bool(D[B]) lo, hi = 0, max(W) while lo < hi: if ok(mi:=(lo+hi)>>1): hi = mi else: lo = mi+1 print(lo)