#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define quick ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int inf=0x3f3f3f3f,maxn=2e5+5,mod=998244353;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
return s*w;
}
void solve(){
int n;n=read();
vector<vector<int>>grid(n+1,vector<int>(n+1));
vector<vector<int>>dp(n+1,vector<int>(n+1));
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
grid[i][j]=read();
if(i==n){
dp[i][j]=grid[i][j];
}
}
}
//dp[i][j]=max(dp[i][j]+dp[i-1][j-1],dp[i][j]+dp[i-1][j])
for(int i=n-1;i>0;i--){
for(int j=1;j<=i;j++){
dp[i][j]=max(dp[i+1][j+1],dp[i+1][j]);
dp[i][j]+=grid[i][j];
}
}
cout<<dp[1][1]<<endl;
}
signed main(){
int t=1;
// cin>>t;
while(t--){
solve();
}
return 0;
}