# en partant du bas de la pyramide, on remplit les cases en
# additionnant leur valeurs avec le maximum des valeurs des deux cases
# du dessous
def pyramide(n, numbers):
for i in xrange(n-2, -1, -1):
for j in xrange(i+1):
numbers[i][j] += max(numbers[i+1][j], numbers[i+1][j+1])
return numbers[0][0]
if __name__ == '__main__':
n = int(raw_input())
data = [int(_) for _ in raw_input().split()]
numbers = []
# on stocke la pyramide sous forme de liste de listes contenant
# chacune les adhérences
for i in xrange(1, n+1):
numbers.append(data[i*(i-1)/2:i*(i+1)/2])
print numbers
print pyramide(n, numbers)