#include <iostream>
using namespace std;
int main(){
int n,i,j;
int a[101][101] = {0};
cin>>n;
//从塔顶往塔底输入
for(i = 0;i < n;i++){
//读入第i行的内容
for(j = 0;j <= i;j++){
cin>>a[i][j];
}
}
//从塔底的某个数,往塔顶走,倒推,a[i][j] 存放到达第i层的最大值
//它所能走得路线:正上方a[i+1][j],右上方a[i+1][j+1] 2条线
for(i = n - 2;i >= 0;i--){
for(j = 0;j <= i;j++){
if(a[i + 1][j] > a[i + 1][j + 1]){
a[i][j] = a[i][j] + a[i + 1][j];
}else{
a[i][j] = a[i][j] + a[i + 1][j + 1];
}
}
}
cout<<a[0][0]<<endl;
}
/**************************************************************
Problem: 1216
User: admin
Language: C++
Result: Accepted
Time:19 ms
Memory:2072 kb
****************************************************************/