#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
int **trigle = new int *[n];
int **dp = new int *[n];
for(int i=0; i<n; i++){
trigle[i] = new int[i+1];
dp[i] = new int[i+1];
memset(dp[i], 0, sizeof(int)*(i+1));
}
for(int i=0; i<n; i++){
for(int j=0; j<=i; j++){
cin >> trigle[i][j];
}
}
dp[0][0] = trigle[0][0];
for(int i=0; i<(n-1); i++){
for(int j=0; j<=i; j++){
dp[i+1][j] = max(dp[i+1][j], dp[i][j] + trigle[i+1][j]);
dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j] + trigle[i+1][j+1]);
}
}
cout << *max_element(dp[n-1], dp[n-1]+n);
}