#include"bits/stdc++.h"
using namespace std;
/*动态规划
使用递归去算最下面的最大值然后用最大值去回溯
*/
using namespace std;
const int N=10;
int a[N][N];
int n;
int get_max(int i,int j)
{
if(i==n)return a[i][j];
int left ,right ;
left=get_max(i+1,j);
right=get_max(i+1,j+1);
return left>right?left+a[i][j]:right+a[i][j];
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
cin>>a[i][j];
}
}
cout<<get_max(0,0)<<endl;
}