/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static int maxSumPath(int[][] data) {
final int length = data.length;
final int[][][] sumArr = new int[3][length][length];
for (int row = length - 1; row >= 0; row--) {
for (int col = 0; col < length; col++) {
int val = data[row][col];
int val2 = data[row][col] * 2;
if (row == length - 1 && col == 0) {
sumArr[0][row][col] = val;
sumArr[1][row][col] = val2;
} else if (row == length - 1) {
sumArr[0][row][col] = sumArr[0][row][col - 1] + val;
sumArr
[1][row
][col
] = Math.
max( sumArr[1][row][col - 1] + val
, sumArr[0][row][col - 1] + val2
);
sumArr
[2][row
][col
] = Math.
max( sumArr[1][row][col - 1] + val2
, sumArr[2][row][col - 1] + val
);
} else if (col == 0) {
sumArr[0][row][col] = sumArr[0][row + 1][col] + val;
sumArr
[1][row
][col
] = Math.
max( sumArr[0][row + 1][col] + val2
, sumArr[1][row + 1][col] + val
);
sumArr
[2][row
][col
] = Math.
max( sumArr[1][row + 1][col] + val2
, sumArr[2][row + 1][col] + val
);
} else {
sumArr
[0][row
][col
] = Math.
max( sumArr[0][row][col - 1], sumArr[0][row + 1][col]
) + data[row][col];
sumArr
[1][row
][col
] = Math.
max( Math.
max(sumArr
[0][row
][col
- 1], sumArr
[0][row
+ 1][col
]) + val2
,
Math.
max(sumArr
[1][row
][col
- 1], sumArr
[1][row
+ 1][col
]) + val
);
sumArr
[2][row
][col
] = Math.
max( Math.
max(sumArr
[1][row
][col
- 1], sumArr
[1][row
+ 1][col
])+val2
,
Math.
max(sumArr
[2][row
][col
- 1], sumArr
[2][row
+ 1][col
])+val
);
}
}
}
return sumArr[2][0][length - 1];
}
{
int[][] data = new int[][] {
new int[] {3, 0, 2}
, new int[] {2, 0, 0}
, new int[] {0, 3, 0}
};
System.
out.
println(maxSumPath
(data
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCQoJCnN0YXRpYyBpbnQgbWF4U3VtUGF0aChpbnRbXVtdIGRhdGEpIHsKICAgIGZpbmFsIGludCBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgIGZpbmFsIGludFtdW11bXSBzdW1BcnIgPSBuZXcgaW50WzNdW2xlbmd0aF1bbGVuZ3RoXTsKICAgIGZvciAoaW50IHJvdyA9IGxlbmd0aCAtIDE7IHJvdyA+PSAwOyByb3ctLSkgewogICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IGxlbmd0aDsgY29sKyspIHsKICAgICAgICAJaW50IHZhbCA9IGRhdGFbcm93XVtjb2xdOwogICAgICAgIAlpbnQgdmFsMiA9IGRhdGFbcm93XVtjb2xdICogMjsKICAgICAgICAgICAgaWYgKHJvdyA9PSBsZW5ndGggLSAxICYmIGNvbCA9PSAwKSB7CiAgICAgICAgICAgICAgICBzdW1BcnJbMF1bcm93XVtjb2xdID0gdmFsOwogICAgICAgICAgICAgICAgc3VtQXJyWzFdW3Jvd11bY29sXSA9IHZhbDI7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm93ID09IGxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgIHN1bUFyclswXVtyb3ddW2NvbF0gPSBzdW1BcnJbMF1bcm93XVtjb2wgLSAxXSArIHZhbDsKICAgICAgICAgICAgICAgIHN1bUFyclsxXVtyb3ddW2NvbF0gPSBNYXRoLm1heCgKICAgICAgICAgICAgICAgIAlzdW1BcnJbMV1bcm93XVtjb2wgLSAxXSArIHZhbAogICAgICAgICAgICAgICAgLCAgIHN1bUFyclswXVtyb3ddW2NvbCAtIDFdICsgdmFsMgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHN1bUFyclsyXVtyb3ddW2NvbF0gPSBNYXRoLm1heCgKICAgICAgICAgICAgICAgIAlzdW1BcnJbMV1bcm93XVtjb2wgLSAxXSArIHZhbDIKICAgICAgICAgICAgICAgICwgICBzdW1BcnJbMl1bcm93XVtjb2wgLSAxXSArIHZhbAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjb2wgPT0gMCkgewogICAgICAgICAgICAgICAgc3VtQXJyWzBdW3Jvd11bY29sXSA9IHN1bUFyclswXVtyb3cgKyAxXVtjb2xdICsgdmFsOwogICAgICAgICAgICAgICAgc3VtQXJyWzFdW3Jvd11bY29sXSA9IE1hdGgubWF4KAogICAgICAgICAgICAgICAgCXN1bUFyclswXVtyb3cgKyAxXVtjb2xdICsgdmFsMgogICAgICAgICAgICAgICAgLCAgIHN1bUFyclsxXVtyb3cgKyAxXVtjb2xdICsgdmFsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgc3VtQXJyWzJdW3Jvd11bY29sXSA9IE1hdGgubWF4KAogICAgICAgICAgICAgICAgCXN1bUFyclsxXVtyb3cgKyAxXVtjb2xdICsgdmFsMgogICAgICAgICAgICAgICAgLCAgIHN1bUFyclsyXVtyb3cgKyAxXVtjb2xdICsgdmFsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc3VtQXJyWzBdW3Jvd11bY29sXSA9IE1hdGgubWF4KAogICAgICAgICAgICAgICAgCXN1bUFyclswXVtyb3ddW2NvbCAtIDFdLCBzdW1BcnJbMF1bcm93ICsgMV1bY29sXQogICAgICAgICAgICAgICAgKSArIGRhdGFbcm93XVtjb2xdOwogICAgICAgICAgICAgICAgc3VtQXJyWzFdW3Jvd11bY29sXSA9IE1hdGgubWF4KAogICAgICAgICAgICAgICAgCU1hdGgubWF4KHN1bUFyclswXVtyb3ddW2NvbCAtIDFdLCBzdW1BcnJbMF1bcm93ICsgMV1bY29sXSkgKyB2YWwyCiAgICAgICAgICAgICAgICAsICAgTWF0aC5tYXgoc3VtQXJyWzFdW3Jvd11bY29sIC0gMV0sIHN1bUFyclsxXVtyb3cgKyAxXVtjb2xdKSArIHZhbAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHN1bUFyclsyXVtyb3ddW2NvbF0gPSBNYXRoLm1heCgKICAgICAgICAgICAgICAgIAlNYXRoLm1heChzdW1BcnJbMV1bcm93XVtjb2wgLSAxXSwgc3VtQXJyWzFdW3JvdyArIDFdW2NvbF0pK3ZhbDIKICAgICAgICAgICAgICAgICwJTWF0aC5tYXgoc3VtQXJyWzJdW3Jvd11bY29sIC0gMV0sIHN1bUFyclsyXVtyb3cgKyAxXVtjb2xdKSt2YWwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gc3VtQXJyWzJdWzBdW2xlbmd0aCAtIDFdOwp9CQoJCgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWludFtdW10gZGF0YSA9IG5ldyBpbnRbXVtdIHsKCQkJbmV3IGludFtdIHszLCAwLCAyfQoJCSwgICBuZXcgaW50W10gezIsIDAsIDB9CgkJLCAgIG5ldyBpbnRbXSB7MCwgMywgMH0KCQl9OwoJCVN5c3RlbS5vdXQucHJpbnRsbihtYXhTdW1QYXRoKGRhdGEpKTsKCX0KfQ==