#include <iostream>
using namespace std;

int main(){
    int n,i,j;
    int a[101][101] = {0};
    cin>>n;
    
    //从塔顶往塔底输入
	for(i = 0;i < n;i++){
		//读入第i行的内容
		for(j = 0;j <= i;j++){
			cin>>a[i][j];
		} 
	} 
	
	//从塔底的某个数,往塔顶走,倒推,a[i][j] 存放到达第i层的最大值 
	//它所能走得路线:正上方a[i+1][j],右上方a[i+1][j+1] 2条线
	for(i = n - 2;i >= 0;i--){
		for(j = 0;j <= i;j++){
			if(a[i + 1][j] > a[i + 1][j + 1]){
				a[i][j] = a[i][j] + a[i + 1][j];
			}else{
				a[i][j] = a[i][j] + a[i + 1][j + 1];
			}
		}
	}
	
	cout<<a[0][0]<<endl;
}

/**************************************************************
	Problem: 1216
	User: admin
	Language: C++
	Result: Accepted
	Time:19 ms
	Memory:2072 kb
****************************************************************/