#include <stdio.h>

#define max(a, b) (((a)>(b))?(a):(b))

#define MAX 502

int tri[MAX][MAX] = { 0, };

int dp[MAX][MAX] = { 0, }; // i층 j번째 요소까지의 최대합

int main()

{

// 입력

int n;

scanf("%d", &n);

if (n < 1 || n > 500)

return 0;

int i, j;

for (i = 1; i <= n; i++)

for (j = 1; j <= i; j++)

{

scanf("%d", &tri[i][j]);

if (tri[i][j] < 0 || tri[i][j] > 99)

return 0;

}

// 계산

for (i = 1; i <= n; i++)

for (j = 1; j <= i; j++)

dp[i][j] = tri[i][j] + max(dp[i - 1][j - 1], dp[i - 1][j]);

// 출력

int result = 0;

for (j = 1; j <= n; j++)

if (result < dp[n][j]) result = dp[n][j];

printf("%d", result);

/* dp[i][j] 출력

for (i = 1; i <= n; i++)

{

puts("");

for (j = 1; j <= i; j++)

printf("%d ", dp[i][j]);

}

*/

return 0;

}



형님들 왜틀렸는지 감이 전혀 안잡혀요 ㅜㅜㅜ