N = int(input())
num = [list(map(int, input().split())) for _ in range(N)]
dp = [[]]
dp[0].append(num[0][0]) # 삼각형의 맨 꼭대기값 초기화
for n in range(1,N): # 2번째 줄 부터 윗줄의 값을 더해나간다.
temp = []
temp.append(num[n][0] + dp[n-1][0]) # n번째 줄의 맨 왼쪽값 계산
for m in range(1, n): # n번째 줄의 값 계산
temp.append(num[n][m] + max(dp[n-1][m-1], dp[n-1][m]))
# n번째 줄 m번째 값은 n-1번째 줄의 m-1, m번째 값 중 최댓값을 누적하여 계산
temp.append(num[n][n] + dp[n-1][n-1]) # n번째 줄의 맨 오른쪽값 계산
dp.append(temp)
answer = max(dp[N-1]) # N번째 줄의 최댓값을 출력
print(answer)