#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[51][51],f[105][51][51];
int main()
{
    int m,n;
    cin>>m>>n;
    for (int i=1;i<=m;i++)
        for (int j=1;j<=n;j++)
            cin>>a[i][j];
    memset(f,0,sizeof(f));
    f[2][1][1]=0;
    for (int k=3;k<=m+n-1;k++)
        for (int i=1;i<k;i++)
            for (int j=i+1;j<k;j++)
                if (k-i>=1&&k-i<=n&&k-j>=1&&k-j<=n)
                {
                      f[k][i][j]=max(f[k][i][j],f[k-1][i][j]);   
                      f[k][i][j]=max(f[k][i][j],f[k-1][i-1][j]);
                      f[k][i][j]=max(f[k][i][j],f[k-1][i][j-1]);
                      f[k][i][j]=max(f[k][i][j],f[k-1][i-1][j-1]); 
                      f[k][i][j]+=a[i][k-i]+a[j][k-j];
                }
    cout<<f[m+n-1][m-1][m]<<endl;
    return 0;
}

/**************************************************************
	Problem: 2282
	User: admin
	Language: C++
	Result: Accepted
	Time:73 ms
	Memory:3152 kb
****************************************************************/