#include<bits/stdc++.h>
using namespace std;
const int maxn=55;
int n,m,a[maxn][maxn],f[2*maxn][maxn][maxn];
int read(){
int ret=0,f=1;char ch=getchar();
while(!isdigit(ch)) f^=!(ch^'-'),ch=getchar();
while( isdigit(ch)) ret=(ret<<3)+(ret<<1)+(ch&15),ch=getchar();
if(!f) ret=-ret; return ret;
}
int Max(int x,int y,int j,int k){return max(max(x,y),max(j,k));}
int main(){
n=read(),m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) a[i][j]=read();
for(int k=3;k<2*n;k++)
for(int i=1;i<=min(k,n);i++)
for(int j=i+1;j<=min(k,n);j++)
f[k][i][j]=Max(f[k-1][i-1][j-1],f[k-1][i-1][j],f[k-1][i][j-1],f[k-1][i][j])+a[i][k-i+1]+a[j][k-j+1];
printf("%d\n",f[2*n-1][n-1][n]+a[1][1]+a[1][2]+a[2][1]);
return 0;
}