#include <iostream>
using namespace std;
int main() {
int f[10][10], dp[10][10];
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
scanf("%d", &f[i][j]);
}
}
for (int i = 0; i < n; i++) {
dp[n-1][i] = f[n-1][i];
}
//动态规划
for (int i = n - 2; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
dp[i][j] = max(dp[i+1][j], dp[i+1][j+1]) + f[i][j];
}
}
printf("%d\n", dp[0][0]);
return 0;
}
/*******************
5
5
8 3
12 7 16
4 10 11 6
9 5 10 9 12
*******************/