
https://www.acmicpc.net/problem/1932
DP[i][j]: i행 j열까지 내려왔을 때의 최대 합import sys
input = sys.stdin.readline
n = int(input())
triangle = [list(map(int, input().split())) for _ in range(n)]
for i in range(1, n):
for j in range(i + 1): # 각 행의 원소 개수는 i+1개
if j == 0:
triangle[i][j] += triangle[i - 1][j] # 좌측 끝은 바로 위에서만 옴
elif j == i:
triangle[i][j] += triangle[i - 1][j - 1] # 우측 끝은 대각선 왼쪽 위에서만 옴
else:
triangle[i][j] += max(triangle[i - 1][j - 1], triangle[i - 1][j]) # 중간은 두 곳에서 비교
print(max(triangle[n - 1]))