/*
用opt[][]来记录已经产生的最优解
来解决对某些最优解进行重复求解的问题
*/
#define LOCAL
#include<iostream>
using namespace std;
#define N 100
int a[N][N],opt[N][N];
int sum(int i,int j,int n)
{
if(opt[i][j])
return opt[i][j]+a[i][j];
else
{
if(i==n-1) return a[i][j];
if((opt[i][j]=sum(i+1,j,n))>(opt[i][j]=sum(i+1,j+1,n)))
return opt[i][j]+a[i][j];
else
return opt[i][j]+a[i][j];
}
}
int main()
{
#ifdef LOCAL
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int i,j,n;
while(cin>>n)
{
memset(opt,0,sizeof(opt));
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
cin>>a[i][j];
cout<<sum(0,0,n)<<endl;
}
return 0;
}