def get_input():
    n = int(input())
    values = [int(i) for i in input().split()]
    return n, values

def main():
    n, values = get_input()
    if n < 1 or n > 100:
        return
    values.insert(0, 0)
    count = 0
    for i in range(1, n+1):
        if 2*i+1 > n:
            break
        while values[i] > 0 or values[2*i] > 0 or values[2*i+1] > 0:
            if values[2*i+1] > 0:
                values[2*i+1] -= 1
            if values[i] > 0:
                values[i] -= 1
            if values[2*i] > 0:
                values[2*i] -= 1
            count += 1

    count += sum(values)
    print(count)


main()
36%
这里有一个毛病,就是当你打到第i个时,怎么做出决策。代码里写的是,必须将2*i和2*i+1位置的数打完,再继续往后走。后来,lz又想到可以判断2*i和2*i+1是否超过一半了,如果超过一半,则必须将其打完,如果没有超过一半可以考虑不打完。。当然,现在也没办法验证了。溜了溜了。。。