// Memory-based search
# Include <iostream>
# Include <string. h>
Using namespace STD;
Int A [101] [101], n, B [101] [101];
Int F (int I, Int J)
{If (B [I] [J]! =-1) return B [I] [J];
If (I = N-1) return B [I] [J] = A [I] [J];
Else return B [I] [J] = A [I] [J] + max (f (I + 1, J), F (I + 1, J + 1 ));
}
Int main ()
{
Int I, J;
Memset (B,-1, sizeof (B ));
Cin> N;
Int maxn = 0;
For (I = 0; I <n; I ++)
For (j = 0; j <= I; j ++)
Cin> A [I] [J];
Cout <F (0, 0) <Endl;
Return 0;
}
# Include <iostream>
# Include <string. h>
Using namespace STD;
Int A [1005] [1005], B [1005] [1005];
Int N;
Int max (int x, int y)
{Return x> Y? X: Y ;}
Int F (int I, Int J)
{
If (B [I] [J]! =-1) return B [I] [J];
Return B [I] [J] = A [I] [J] + max (f (I + 1, J), F (I + 1, J + 1 ));
}
Int main ()
{
Int I, J;
While (CIN> N)
{
For (I = 0; I <n; I ++)
For (j = 0; j <= I; j ++) CIN> A [I] [J];
Memset (B,-1, sizeof (B ));
For (j = 0; j <n; j ++) B [I-1] [J] = A [I-1] [J];
Cout <F (0, 0) <Endl;
}
}