#include <iostream>
using namespace std;
int main(){
int rows;
cin>>rows;//輸入三角數組的行數
int a[100][100];//直接聲明一個100*100的數組,保證能存放所有的可能三角數組
for(int i=0;i<rows;++i){ //輸入三角數組的值
for(int j=0;j<=i;++j){
cin>>a[i][j];
}
}
int preMax;
for(int i=rows-2;i>=0;--i){ //自底向上計算每個元素到最底層的最大值
for(int j=0;j<=i;++j){
preMax=(a[i+1][j]<a[i+1][j+1]?a[i+1][j+1]:a[i+1][j]);
a[i][j]=a[i][j]+preMax;
}
}
cout<<a[0][0];//所求的最大值已經存放在a[0][0]中,輸出即可。
return 0;
}