output_description: Print 2^N-1 lines. In the i-th line, print the answer of the problem above for
  K=i.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_0 A_1 ... A_{2^N-1}
attempt: def examC():
      ans = 0
      print(ans)
      return
  
  
  def examD():
      ans = 0
      print(ans)
      return
  
  
  # 参考
  # https://qiita.com/Euglenese/items/260f9ddf513f772d7e42
  def examE():
      N = I()
      A = LI()
      n = len(A)
      dp = [[0, 0] for _ in range(n)]
      for i, a in enumerate(A):
          dp[i][0] = a
      for j in range(N):
          for i, a in enumerate(A):
              if i & (1 << j) > 0:
                  dp[i] = sorted(dp[i & ~(1 << j)] + dp[i], reverse=True)[:2]
      ans = 0
      for v in dp[1:]:
          ans = max(ans, sum(v))
          print(ans)
      return
  
  
  def examF():
      ans = 0
      print(ans)
      return
  
  
  from decimal import getcontext, Decimal as dec
  import sys, bisect, itertools, heapq, math, random
  from copy import deepcopy
  from heapq import heappop, heappush, heapify
  from collections import Counter, defaultdict, deque
  
  read = sys.stdin.buffer.read
  readline = sys.stdin.buffer.readline
  readlines = sys.stdin.buffer.readlines
  
  
  def I():
      return int(input())
  
  
  def LI():
      return list(map(int, sys.stdin.readline().split()))
  
  
  def DI():
      return dec(input())
  
  
  def LDI():
      return list(map(dec, sys.stdin.readline().split()))
  
  
  def LSI():
      return list(map(str, sys.stdin.readline().split()))
  
  
  def LS():
      return sys.stdin.readline().split()
  
  
  def SI():
      return sys.stdin.readline().strip()
  
  
  global mod, mod2, inf, alphabet, _ep
  mod = 10**9 + 7
  mod2 = 998244353
  inf = 10**18
  _ep = dec("0.000000000001")
  alphabet = [chr(ord("a") + i) for i in range(26)]
  alphabet_convert = {chr(ord("a") + i): i for i in range(26)}
  
  getcontext().prec = 28
  
  sys.setrecursionlimit(10**7)
  
  if __name__ == "__main__":
      examE()
  
  """
  142
  12 9 1445 0 1
  asd dfg hj o o
  aidn
  """
  
problem_description: Statement
  
  There is an integer sequence of length 2^N: A_0, A_1, ..., A_{2^N-1}. (Note
  that the sequence is 0-indexed.)
  
  For every integer K satisfying 1 \leq K \leq 2^N-1, solve the following
  problem:
  
    * Let i and j be integers. Find the maximum value of A_i + A_j where 0 \leq i < j \leq 2^N-1 and (i or j) \leq K. Here, or denotes the bitwise OR.
samples: [{"input": "2\n    1 2 3 1", "output": "3\n    4\n    5\n    \n\nFor K=1, the only possible pair of i and j is (i,j)=(0,1), so the answer is\nA_0+A_1=1+2=3.\n\nFor K=2, the possible pairs of i and j are (i,j)=(0,1),(0,2). When\n(i,j)=(0,2), A_i+A_j=1+3=4. This is the maximum value, so the answer is 4.\n\nFor K=3, the possible pairs of i and j are\n(i,j)=(0,1),(0,2),(0,3),(1,2),(1,3),(2,3) . When (i,j)=(1,2), A_i+A_j=2+3=5.\nThis is the maximum value, so the answer is 5.\n\n* * *"}, {"input": "3\n    10 71 84 33 6 47 23 25", "output": "81\n    94\n    155\n    155\n    155\n    155\n    155\n    \n\n* * *"}, {"input": "4\n    75 26 45 72 81 47 97 97 2 2 25 82 84 17 56 32", "output": "101\n    120\n    147\n    156\n    156\n    178\n    194\n    194\n    194\n    194\n    194\n    194\n    194\n    194\n    194"}]