#include <bits/stdc++.h>
#define ll long long
#define vt vector
#define un unsigned
#define us unordered_set
#define um unordered_map
#define qq queue
#define st set
#define stk stack
#define inl inline
using namespace std;
int dp[1005][1005];
int a[1005][1005];
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
if (j == 1)
{
dp[i][j] = dp[i - 1][j] + a[i][j];
continue;
}
if (i == j)
{
dp[i][j] = dp[i - 1][j - 1] + a[i][j];
continue;
}
else
{
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j];
}
}
}
int mx = 0;
for (int i = 1; i <= n; i++)
{
mx = max(mx, dp[n][i]);
}
cout << mx << endl;
return 0;
}
求条