#include<bits/stdc++.h>
using namespace std;
int m,n,f[115][55][55],vis[55][55];
int M(int a,int b,int c,int d){
return max(a,max(b,max(c,d)));
}
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>vis[i][j];
}
}
for(int l=1;l<=m+n-1;l++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(l-i+1<1 || l-j+1<1 || l-i+1>m || l-j+1>m){
continue;
}
f[l][i][j]=M(f[l-1][i-1][j-1]+vis[i-1][l-i+1]+vis[j-1][l-j+1],f[l-1][i][j-1]+vis[i][l-i]+vis[j-1][l-j+1],f[l-1][i-1][j]+vis[i-1][l-i+1]+vis[j][l-j],f[l-1][i][j]+vis[i][l-i]+vis[j][l-j]);
if(i==j)
f[l][i][j]-=vis[i][l-i+1];
}
}
}
cout<<f[n+m-1][n][n];
return 0;
}