import re

triangle = """75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23"""

li = re.split(" |\n", triangle)
print(li)




def getInd(row, col):
    place = (row - 1 + 1) * (row - 1) / 2 + col
    return int(place-1)

# takes in # of row and place in the row
def getAdjacentNums(row, pos):
    place = (row-1 + 1) * (row-1) / 2 + pos
    return (int(place + row) - 1, int(place+row+1) - 1)

# print(getAdjacentNums(2, 2))

def sum(size):
    row = size - 1
    while row != 0:
        for col in range(1, row + 1):
            p12 = getAdjacentNums(row, col)
            p1 = p12[0]
            p2 = p12[1]
            cur = getInd(row, col)
            li[cur] = int(li[cur]) + max(int(li[p1]), int(li[p2]))

        row -= 1
        
sum(15)
print(li[0])