#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void maximize(T& a, const T& b) {
if (a < b) a = b;
}
const int N = 1e2 + 5;
int n, m;
int a[N][N];
int dp[N][N]; // dp[i][j] = Đường đi có tổng lớn nhất xuất phát từ một ô ở cột 1 đi đến ô (i, j)
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) cin >> a[i][j];
}
for (int j = 1; j <= m; j++) {
for (int i = 1; i <= n; i++) {
int& cur = dp[i][j];
if (j == 1) {
cur = a[i][j];
continue;
}
cur = -INF;
if (i > 1) {
maximize(cur, dp[i - 1][j - 1] + a[i][j]);
}
maximize(cur, dp[i][j - 1] + a[i][j]);
if (i + 1 <= n) {
maximize(cur, dp[i + 1][j - 1] + a[i][j]);
}
}
}
int ans = -INF;
for (int i = 1; i <= n; i++) maximize(ans, dp[i][m]);
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgbWF4aW1pemUoVCYgYSwgY29uc3QgVCYgYikgewoJaWYgKGEgPCBiKSBhID0gYjsgIAp9Cgpjb25zdCBpbnQgTiA9IDFlMiArIDU7ICAgCgppbnQgbiwgbTsgCmludCBhW05dW05dOwppbnQgZHBbTl1bTl07IC8vIGRwW2ldW2pdID0gxJDGsOG7nW5nIMSRaSBjw7MgdOG7lW5nIGzhu5tuIG5o4bqldCB4deG6pXQgcGjDoXQgdOG7qyBt4buZdCDDtCDhu58gY+G7mXQgMSDEkWkgxJHhur9uIMO0IChpLCBqKQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgIAkKCWNpbiA+PiBuID4+IG07ICAgICAKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIGNpbiA+PiBhW2ldW2pdOyAgCgl9CgkJCglmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKCQlmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQkJaW50JiBjdXIgPSBkcFtpXVtqXTsKCQkJaWYgKGogPT0gMSkgewoJCQkJY3VyID0gYVtpXVtqXTsKCQkJCWNvbnRpbnVlOyAKCQkJfQoJCQljdXIgPSAtSU5GOyAKCQkJaWYgKGkgPiAxKSB7CgkJCQltYXhpbWl6ZShjdXIsIGRwW2kgLSAxXVtqIC0gMV0gKyBhW2ldW2pdKTsgCgkJCX0KCQkJbWF4aW1pemUoY3VyLCBkcFtpXVtqIC0gMV0gKyBhW2ldW2pdKTsgCgkJCWlmIChpICsgMSA8PSBuKSB7CgkJCQltYXhpbWl6ZShjdXIsIGRwW2kgKyAxXVtqIC0gMV0gKyBhW2ldW2pdKTsKCQkJfQoJCX0KCX0KCglpbnQgYW5zID0gLUlORjsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBtYXhpbWl6ZShhbnMsIGRwW2ldW21dKTsgIAoKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9