#include <iostream>
#include <string.h>
using namespace std;
int max(int n1, int n2) {
if (n1 > n2)
return n1;
else
return n2;
}
int main() {
std::ios::sync_with_stdio(false);
int n;
int dp[500][500];
for(int i=0;i<500; i++){
memset(dp[i],0, sizeof(int) * 500);
}
cin >> n;
for (int i = 0; i < n;i++) {
for (int j = 0; j <= i; j++) {
cin >> dp[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
if (i == 0 && j == 0) {
}
else {
dp[i][j] = dp[i][j] + max(dp[i - 1][j - 1], dp[i - 1][j]);
}
}
}
int result = 0;
for (int j = 0; j < n; j++) {
result = max(dp[n - 1][j], result);
}
cout << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWF4KGludCBuMSwgaW50IG4yKSB7CmlmIChuMSA+IG4yKQpyZXR1cm4gbjE7CmVsc2UKcmV0dXJuIG4yOwp9CgppbnQgbWFpbigpIHsKCnN0ZDo6aW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwppbnQgbjsKaW50IGRwWzUwMF1bNTAwXTsKCmZvcihpbnQgaT0wO2k8NTAwOyBpKyspewptZW1zZXQoZHBbaV0sMCwgc2l6ZW9mKGludCkgKiA1MDApOwp9CgpjaW4gPj4gbjsKZm9yIChpbnQgaSA9IDA7IGkgPCBuO2krKykgewpmb3IgKGludCBqID0gMDsgaiA8PSBpOyBqKyspIHsKY2luID4+IGRwW2ldW2pdOwp9Cn0KCmZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7Cgpmb3IgKGludCBqID0gMDsgaiA8PSBpOyBqKyspIHsKaWYgKGkgPT0gMCAmJiBqID09IDApIHsKCn0KZWxzZSB7CmRwW2ldW2pdID0gZHBbaV1bal0gKyBtYXgoZHBbaSAtIDFdW2ogLSAxXSwgZHBbaSAtIDFdW2pdKTsKfQp9Cn0KCmludCByZXN1bHQgPSAwOwpmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykgewpyZXN1bHQgPSBtYXgoZHBbbiAtIDFdW2pdLCByZXN1bHQpOwp9CmNvdXQgPDwgcmVzdWx0IDw8IGVuZGw7CnJldHVybiAwOwp9