public class Main {
private static int n;
private static int m;
private static int [][]grid;
private static int [][]q;
String[] f
= in.
readLine().
split(" "); if (n > 0 && m > 0) {
grid = new int[n][m];
q = new int[n][m];
for (int i=0; i<n; i++) {
String[] s
= in.
readLine().
split(" "); for (int j=0;j<s.length;j++) {
grid
[i
][j
] = Integer.
parseInt(s
[j
]); q[i][j] = grid[i][j];
}
}
}
System.
out.
println(n
>0&&m
>0?computeShortest
():"0"); }
private static void computeShortestPathArrays() {
for (int y=n-1;y>=0;y--) {
for (int x=0;x<m;x++) {
if (y==n-1) {
q[y][x] = grid[y][x];
}else {
int m = getMin(y,x);
q[y][x] = m + grid[y][x];
}
}
}
}
private static int computeShortest() {
computeShortestPathArrays();
return q[0][0];
}
private static int getMin(int y, int x) {
if (y==n-2) {
if (x==0) {
return Math.
min(grid
[y
+1][x
], grid
[y
+1][x
+1]); }else if (x==m-1) {
return Math.
min(grid
[y
+1][x
-1], grid
[y
+1][x
]); }else {
return Math.
min(grid
[y
+1][x
-1],
Math.
min(grid
[y
+1][x
], grid
[y
+1][x
+1])); }
}else {
if (x==0) {
return Math.
min(q
[y
+1][x
], q
[y
+1][x
+1]); }else if (x==m-1) {
return Math.
min(q
[y
+1][x
-1], q
[y
+1][x
]); }else {
return Math.
min(q
[y
+1][x
-1],
Math.
min(q
[y
+1][x
], q
[y
+1][x
+1])); }
}
}
}
cHVibGljIGNsYXNzIE1haW4gewoJcHJpdmF0ZSBzdGF0aWMgaW50IG47Cglwcml2YXRlIHN0YXRpYyBpbnQgbTsKCXByaXZhdGUgc3RhdGljIGludCBbXVtdZ3JpZDsKCXByaXZhdGUgc3RhdGljIGludCBbXVtdcTsKCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbnsKCQlqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyIGluID0gbmV3IGphdmEuaW8uQnVmZmVyZWRSZWFkZXIgKG5ldyBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIChTeXN0ZW0uaW4pKTsKCQkKCQlTdHJpbmdbXSBmID0gaW4ucmVhZExpbmUoKS5zcGxpdCgiICIpOwogICAgCW4gPSBJbnRlZ2VyLnBhcnNlSW50KGZbMF0pOwogICAgCW0gPSBJbnRlZ2VyLnBhcnNlSW50KGZbMV0pOwogICAgCWlmIChuID4gMCAmJiBtID4gMCkgewoJICAgIAlncmlkID0gbmV3IGludFtuXVttXTsKCQlxID0gbmV3IGludFtuXVttXTsKCQkJCgkgICAgCWZvciAoaW50IGk9MDsgaTxuOyBpKyspIHsKCSAgICAJCVN0cmluZ1tdIHMgPSBpbi5yZWFkTGluZSgpLnNwbGl0KCIgIik7CgkgICAgCQlmb3IgKGludCBqPTA7ajxzLmxlbmd0aDtqKyspIHsKCSAgICAJCQlncmlkW2ldW2pdID0gSW50ZWdlci5wYXJzZUludChzW2pdKTsKCQkJCXFbaV1bal0gPSBncmlkW2ldW2pdOwoJICAgIAkJfQoJICAgIAl9CiAgICAJfQogICAgCVN5c3RlbS5vdXQucHJpbnRsbihuPjAmJm0+MD9jb21wdXRlU2hvcnRlc3QoKToiMCIpOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIGNvbXB1dGVTaG9ydGVzdFBhdGhBcnJheXMoKSB7CgkJZm9yIChpbnQgeT1uLTE7eT49MDt5LS0pIHsKCQkJZm9yIChpbnQgeD0wO3g8bTt4KyspIHsKCQkJCWlmICh5PT1uLTEpIHsKCQkJCQlxW3ldW3hdID0gZ3JpZFt5XVt4XTsKCQkJCX1lbHNlIHsKCQkJCQlpbnQgbSA9IGdldE1pbih5LHgpOwoJCQkJCXFbeV1beF0gPSBtICsgZ3JpZFt5XVt4XTsKCQkJCX0KCQkJfQoJCX0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgaW50IGNvbXB1dGVTaG9ydGVzdCgpIHsKCQljb21wdXRlU2hvcnRlc3RQYXRoQXJyYXlzKCk7CgkJamF2YS51dGlsLkFycmF5cy5zb3J0KHFbMF0pOwoJCXJldHVybiBxWzBdWzBdOwoJfQoKCXByaXZhdGUgc3RhdGljIGludCBnZXRNaW4oaW50IHksIGludCB4KSB7CgkJaWYgKHk9PW4tMikgewoJCQlpZiAoeD09MCkgewoJCQkJcmV0dXJuIE1hdGgubWluKGdyaWRbeSsxXVt4XSwgZ3JpZFt5KzFdW3grMV0pOwoJCQl9ZWxzZSBpZiAoeD09bS0xKSB7CgkJCQlyZXR1cm4gTWF0aC5taW4oZ3JpZFt5KzFdW3gtMV0sIGdyaWRbeSsxXVt4XSk7CgkJCX1lbHNlIHsKCQkJCXJldHVybiBNYXRoLm1pbihncmlkW3krMV1beC0xXSwgTWF0aC5taW4oZ3JpZFt5KzFdW3hdLCBncmlkW3krMV1beCsxXSkpOwoJCQl9CgkJfWVsc2UgewoJCQlpZiAoeD09MCkgewoJCQkJcmV0dXJuIE1hdGgubWluKHFbeSsxXVt4XSwgcVt5KzFdW3grMV0pOwoJCQl9ZWxzZSBpZiAoeD09bS0xKSB7CgkJCQlyZXR1cm4gTWF0aC5taW4ocVt5KzFdW3gtMV0sIHFbeSsxXVt4XSk7CgkJCX1lbHNlIHsKCQkJCXJldHVybiBNYXRoLm1pbihxW3krMV1beC0xXSwgTWF0aC5taW4ocVt5KzFdW3hdLCBxW3krMV1beCsxXSkpOwoJCQl9CgkJfQoJfQp9