#include<bits/stdc++.h>
using namespace std;
const int N=55;
int f[2*N][N][N];
int a[N][N];
int dx[3]={1,0};
int dy[3]={0,1};
int main(){
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
f[0][1][1]=a[1][1];
for(int i=0;i<=n+m-2;i++){
for(int x1=1;x1<=i+1;x1++){
for(int x2=1;x2<=i+1;x2++){
int y1=i+2-x1,y2=i+2-x2;
for(int j=0;j<2;j++){
for(int k=0;k<2;k++){
int xx1=x1+dx[j],yy1=y1+dy[j];
int xx2=x2+dx[k],yy2=y2+dy[k];
if(xx1>n||xx2>n) continue;
if(xx1==xx2&&yy1==yy2) f[i+1][xx1][xx2]=max(f[i+1][xx1][xx2],f[i][x1][x2]+a[xx1][yy1]);
else f[i+1][xx1][xx2]=max(f[i+1][xx1][xx2],f[i][x1][x2]+a[xx1][yy1]+a[xx2][yy2]);
}
}
}
}
}
printf("%d\n",f[n+m-2][n][n]);
return 0;
}