#include <iostream> using namespace std ; const int N=51; int n,m,a[N][N],f[N][N][N][N]; int MAX(int a,int b,int c,int d){ if(a<b) a=b; if(c<d) c=d; if(a<c) a=c; return a; } int main(){ int i,j,k,l; cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) for(k=1;k<=n;k++) for(l=1;l<=m;l++){ f[i][j][k][l]=MAX( f[i][j-1][k-1][l],f[i][j-1][k][l-1], f[i-1][j][k-1][l],f[i-1][j][k][l-1])+a[i][j]+a[k][l]; if(i==k&&j==l) f[i][j][k][l]-=a[i][j]; } cout<<f[n][m-1][n-1][m]; }