#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int M, N;
cin >> M >> N;
vector<vector<int>> a(M + 2, vector<int>(N + 2));
for (int i = 1; i <= M; i++)
for (int j = 1; j <= N; j++)
cin >> a[i][j];
const long long NEG = -4e18;
vector<vector<long long>> dp(M + 2, vector<long long>(N + 2, NEG));
for (int i = 1; i <= M; i++)
dp[i][1] = a[i][1];
for (int j = 2; j <= N; j++) {
for (int i = 1; i <= M; i++) {
dp[i][j] = a[i][j] + max({ dp[i][j-1],
dp[i-1][j-1],
dp[i+1][j-1] });
}
}
long long ans = NEG;
for (int i = 1; i <= M; i++)
ans = max(ans, dp[i][N]);
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE0sIE47CiAgICBjaW4gPj4gTSA+PiBOOwoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYShNICsgMiwgdmVjdG9yPGludD4oTiArIDIpKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE07IGkrKykKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBOOyBqKyspCiAgICAgICAgICAgIGNpbiA+PiBhW2ldW2pdOwoKICAgIGNvbnN0IGxvbmcgbG9uZyBORUcgPSAtNGUxODsKICAgIHZlY3Rvcjx2ZWN0b3I8bG9uZyBsb25nPj4gZHAoTSArIDIsIHZlY3Rvcjxsb25nIGxvbmc+KE4gKyAyLCBORUcpKTsKCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTTsgaSsrKQogICAgICAgIGRwW2ldWzFdID0gYVtpXVsxXTsKCgogICAgZm9yIChpbnQgaiA9IDI7IGogPD0gTjsgaisrKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTTsgaSsrKSB7CiAgICAgICAgICAgIGRwW2ldW2pdID0gYVtpXVtqXSArIG1heCh7IGRwW2ldW2otMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwW2ktMV1bai0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHBbaSsxXVtqLTFdIH0pOwogICAgICAgIH0KICAgIH0KCgogICAgbG9uZyBsb25nIGFucyA9IE5FRzsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE07IGkrKykKICAgICAgICBhbnMgPSBtYXgoYW5zLCBkcFtpXVtOXSk7CgogICAgY291dCA8PCBhbnM7CiAgICByZXR1cm4gMDsKfQo=