#include<bits/stdc++.h>
using namespace std;
long long n,m,a[55][55],dp[55][55][55][55],vis[55][55];
int main()
{
cin>>n>>m;
for(long long i = 1;i <= n;i++)
{
for(long long j = 1;j <= m;j++)
{
cin>>a[i][j];
}
}
for(long long i = 1;i <= n;i++)
{
for(long long j = 1;j <= m;j++)
{
for(long long k = 1;k <= n;k++)
{
for(long long y = 1;y <= m;y++)
{
dp[i][j][k][y] = max(dp[i-1][j][k-1][y],max(dp[i-1][j][k][y-1],max(dp[i][j-1][k-1][y],dp[i][j-1][k][y-1])));
if(i == k && j == y) continue;
dp[i][j][k][y] = max(dp[i-1][j][k-1][y],max(dp[i-1][j][k][y-1],max(dp[i][j-1][k-1][y],dp[i][j-1][k][y-1])))+a[i][j]+a[k][y];
}
}
}
}
cout<<dp[n][n][n][n];
}