output_description: Print the answer as an integer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_0 A_1 A_2 \cdots A_N
attempt: import sys
  
  max_int = 1000000001  # 10^9+1
  min_int = -max_int
  
  n = int(sys.stdin.readline())
  a = list(map(int, sys.stdin.readline().split()))
  a_ = a[::-1]
  
  sum = 0
  prev_min = 0
  prev_max = 0
  
  prev = []
  
  for num, one in enumerate(a_):
      prev_min = (prev_min + 1) // 2 + one
      prev_max += one
      level_maximum = 2 ** (len(a) - 1 - num)
      if prev_min > level_maximum:
          print(-1)
          exit()
  
      prev_max = min(level_maximum, prev_max)
      prev.append([prev_min, prev_max])
  
  prev = prev[::-1]
  
  sum = 0
  available = 1
  for one in zip(prev, a):
      available = min(available, one[0][1])
      sum += one[1]
      available -= one[1]
      sum += available
  
      available *= 2
  
  print(sum)
  
problem_description: Statement
  
  Given is an integer sequence of length N+1: A_0, A_1, A_2, \ldots, A_N. Is
  there a binary tree of depth N such that, for each d = 0, 1, \ldots, N, there
  are exactly A_d leaves at depth d? If such a tree exists, print the maximum
  possible number of vertices in such a tree; otherwise, print -1.
samples: [{"input": "3\n    0 1 1 2", "output": "7\n    \n\nBelow is the tree with the maximum possible number of vertices. It has seven\nvertices, so we should print 7.\n\n![0d8d99d13df036f23b0c9fcec52b842b.png](https://img.atcoder.jp/nomura2020/0d8d99d13df036f23b0c9fcec52b842b.png)\n\n* * *"}, {"input": "4\n    0 0 1 0 2", "output": "10\n    \n\n* * *"}, {"input": "2\n    0 3 1", "output": "-1\n    \n\n* * *"}, {"input": "1\n    1 1", "output": "-1\n    \n\n* * *"}, {"input": "10\n    0 0 1 1 2 3 5 8 13 21 34", "output": "264"}]