#include<bits/stdc++.h>
#define int long long
const int mx=1001;
int n,m,a[mx][mx],f[mx][mx],up[mx][mx],down[mx][mx];
using namespace std;
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%lld",&a[i][j]);
for(int j=1;j<=m;j++) {
down[0][j]=up[n+1][j]=-1e10;
}
for(int i=1;i<=n;i++){
f[i][0]=-1e10;
}
for(int j=1;j<=m;j++){
for(int i=1;i<=n;i++){
down[i][j]=max(f[i][j-1],down[i-1][j])+a[i][j];
}
for(int i=n;i>=1;i--){
up[i][j]=max(f[i][j-1],up[i+1][j])+a[i][j];
}
for(int i=1;i<=n;i++){
f[i][j]=max(up[i][j],down[i][j]);
}
}
printf("%lld",f[n][m]);
}