#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
inline int read(){
int x=0;
int f=1;
char ch;
ch=getchar();
while(ch>'9'||ch<'0'){
if(ch='-') f=-f;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int a[1005][1005];
int r;
int mem[1005][1005];
int dp(int line,int i){
if(line==r){
return mem[line][i];
}
if(mem[line][i]>0) return mem[line][i];
return mem[line][i]=a[line][i]+max(dp(line+1,i),dp(line+1,i+1));
}
int main()
{
r=read();
for(int i=1;i<=r;i++){
for(int j=1;j<=i;j++){
a[i][j]=read();
}
}
memset(mem,0,sizeof(mem));
for(int i=1;i<=r;i++){
mem[r][i]=a[r][i];
}
cout<<dp(1,1);
return 0;
}