n = gets.to_i a = gets.split.map(&:to_i) dp = Array.new(2 ** n, 0) dp.size.times do |bit| (0...n).each do |x| ((x + 1)...n).each do |y| next unless (bit & (1 << x)) == 0 && (bit & (1 << y)) == 0 nxt = bit | (1 << x) | (1 << y) dp[nxt] = [dp[nxt], dp[bit] ^ (a[x] + a[y])].max end end end p dp.last