#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
****************************************************************/