#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define maxn 200
int dp[maxn];
int num[maxn][maxn];
int main()
{
int n;
int i,j;
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
memset(num,0,sizeof(num));
for( i = 1; i <= n; i++)
for( j = 1; j<=i; j++ )
scanf("%d",&num[i][j]);
for( i =1; i<=n; i++ )
dp[i] = num[n][i];
for( i = n-1; i>=1; i--)
for( j =1; j<=i; j++)
dp[j] = max(dp[j] + num[i][j],dp[j+1] + num[i][j]);
cout<<dp[1]<<endl;
}
}
#include <stdio.h>
#include <string.h>
using namespace std;
#define maxn 200
int dp[maxn];
int num[maxn][maxn];
int main()
{
int n;
int i,j;
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
memset(num,0,sizeof(num));
for( i = 1; i <= n; i++)
for( j = 1; j<=i; j++ )
scanf("%d",&num[i][j]);
for( i =1; i<=n; i++ )
dp[i] = num[n][i];
for( i = n-1; i>=1; i--)
for( j =1; j<=i; j++)
dp[j] = max(dp[j] + num[i][j],dp[j+1] + num[i][j]);
cout<<dp[1]<<endl;
}
}