#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
const int N=1010;
int f[N][N],g[N][N],mem[N][N];
/*int dfs(int x,int y){
if(mem[x][y]) return mem[x][y];
int sum=0;
if(x>n||y>n) sum=0;
else sum=max(dfs(x+1,y),dfs(x+1,y+1))+g[x][y];
mem[x][y]=sum;
return sum;
}dfs加记忆化搜索 时间复杂度较高*/
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++) cin>>g[i][j];
//递推,时间复杂度低
for(int i=n;i>=1;i--){
for(int j=1;j<=n;j++){
f[i][j]=max(f[i+1][j],f[i+1][j+1])+g[i][j];
}
}
cout<<f[1][1];
//int res=dfs(1,1);
//cout<<res;
}