#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e3+3,inf=1145140000;
int a[N][N],f[N][N];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) {
cin>>a[i][j];
f[i][j]=-inf;
}
/* f[n/2][1]=a[n/2][1];
f[n/2-1][1]=a[n/2-1][1];
f[n/2+1][1]=a[n/2+1][1];
*/
for(int i=1;i<=n+1;i++)
for(int j=max(m/2-i,1);j<=min(m/2+i,m);j++){
f[i][j]=max(f[i][j],f[i-1][j]+a[i][j]);
if(j>max(m/2-i+1,1)) f[i][j]=max(f[i][j],f[i-1][j-1]+a[i][j]);
if(j<min(m/2+i-1,m)) f[i][j]=max(f[i][j],f[i-1][j+1]+a[i][j]);
}
/* for(int j=1;j<=m;j++)
for(int i=max(n/2-j,1);i<=min(n/2+j,n);i++){
f[i][j]=max(f[i][j],f[i][j-1]+a[i][j]);
if(i>max(n/2-j+1,1)) f[i][j]=max(f[i][j],f[i-1][j-1]+a[i][j]);
if(i<min(n/2+j-1,n)) f[i][j]=max(f[i][j],f[i+1][j-1]+a[i][j]);
}
*/
cout<<f[n+1][m/2+1];
return 0;
}
/*
6 7
0 16 4 3 12 6 0 3
0 4 -5 6 7 0 0 2
0 6 0 -1 -2 3 6 8
0 5 3 4 0 0 -2 7
0 -1 7 4 0 7 -5 6
0 0 -1 3 4 12 4 2
*/