#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll NEG = LLONG_MIN / 4;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int M, N;
if (!(cin >> M >> N)) return 0;
vector<vector<ll>> A(M + 1, vector<ll>(N + 2, 0));
for (int i = 1; i <= M; ++i)
for (int j = 1; j <= N; ++j)
cin >> A[i][j];
vector<ll> dp(N + 2, NEG);
vector<ll> left(N + 2, NEG), right(N + 2, NEG);
for (int j = 1; j <= N; ++j) {
if (j == 1) left[j] = A[1][j];
else left[j] = max(A[1][j], left[j-1] + A[1][j]);
}
for (int j = N; j >= 1; --j) {
if (j == N) right[j] = A[1][j];
else right[j] = max(A[1][j], right[j+1] + A[1][j]);
}
for (int j = 1; j <= N; ++j) dp[j] = max(left[j], right[j]);
for (int i = 2; i <= M; ++i) {
vector<ll> temp(N + 2, NEG), L(N + 2, NEG), R(N + 2, NEG);
for (int j = 1; j <= N; ++j) temp[j] = dp[j] + A[i][j];
for (int j = 1; j <= N; ++j) {
if (j == 1) L[j] = temp[j];
else L[j] = max(temp[j], L[j-1] + A[i][j]);
}
for (int j = N; j >= 1; --j) {
if (j == N) R[j] = temp[j];
else R[j] = max(temp[j], R[j+1] + A[i][j]);
}
for (int j = 1; j <= N; ++j) dp[j] = max(L[j], R[j]);
}
ll ans = NEG;
for (int j = 1; j <= N; ++j) ans = max(ans, dp[j]);
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBsbCBORUcgPSBMTE9OR19NSU4gLyA0OwoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IE0sIE47CiAgICBpZiAoIShjaW4gPj4gTSA+PiBOKSkgcmV0dXJuIDA7CiAgICB2ZWN0b3I8dmVjdG9yPGxsPj4gQShNICsgMSwgdmVjdG9yPGxsPihOICsgMiwgMCkpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTTsgKytpKQogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IE47ICsraikKICAgICAgICAgICAgY2luID4+IEFbaV1bal07CgogICAgdmVjdG9yPGxsPiBkcChOICsgMiwgTkVHKTsKCiAgICB2ZWN0b3I8bGw+IGxlZnQoTiArIDIsIE5FRyksIHJpZ2h0KE4gKyAyLCBORUcpOwogICAgZm9yIChpbnQgaiA9IDE7IGogPD0gTjsgKytqKSB7CiAgICAgICAgaWYgKGogPT0gMSkgbGVmdFtqXSA9IEFbMV1bal07CiAgICAgICAgZWxzZSBsZWZ0W2pdID0gbWF4KEFbMV1bal0sIGxlZnRbai0xXSArIEFbMV1bal0pOwogICAgfQogICAgZm9yIChpbnQgaiA9IE47IGogPj0gMTsgLS1qKSB7CiAgICAgICAgaWYgKGogPT0gTikgcmlnaHRbal0gPSBBWzFdW2pdOwogICAgICAgIGVsc2UgcmlnaHRbal0gPSBtYXgoQVsxXVtqXSwgcmlnaHRbaisxXSArIEFbMV1bal0pOwogICAgfQogICAgZm9yIChpbnQgaiA9IDE7IGogPD0gTjsgKytqKSBkcFtqXSA9IG1heChsZWZ0W2pdLCByaWdodFtqXSk7CgogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gTTsgKytpKSB7CiAgICAgICAgdmVjdG9yPGxsPiB0ZW1wKE4gKyAyLCBORUcpLCBMKE4gKyAyLCBORUcpLCBSKE4gKyAyLCBORUcpOwoKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBOOyArK2opIHRlbXBbal0gPSBkcFtqXSArIEFbaV1bal07CgogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IE47ICsraikgewogICAgICAgICAgICBpZiAoaiA9PSAxKSBMW2pdID0gdGVtcFtqXTsKICAgICAgICAgICAgZWxzZSBMW2pdID0gbWF4KHRlbXBbal0sIExbai0xXSArIEFbaV1bal0pOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaiA9IE47IGogPj0gMTsgLS1qKSB7CiAgICAgICAgICAgIGlmIChqID09IE4pIFJbal0gPSB0ZW1wW2pdOwogICAgICAgICAgICBlbHNlIFJbal0gPSBtYXgodGVtcFtqXSwgUltqKzFdICsgQVtpXVtqXSk7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBOOyArK2opIGRwW2pdID0gbWF4KExbal0sIFJbal0pOwogICAgfQoKICAgIGxsIGFucyA9IE5FRzsKICAgIGZvciAoaW50IGogPSAxOyBqIDw9IE47ICsraikgYW5zID0gbWF4KGFucywgZHBbal0pOwogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==