#include <bits/stdc++.h>
using namespace std;
const int N = 60;
int g[N][N];
int f[N + N][N][N];
int n, m;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++) cin >> g[i][j];
memset(f, 0, sizeof f);
for (int k = 2; k <= n + m; k ++)
for (int x1 = max(1, k - m); x1 <= min(n, k - 1); x1 ++)
for (int x2 = max(1, k - m); x2 <= min(n, k - 1); x2 ++)
{
int y1 = k - x1, y2 = k - x2;
int t = g[x1][y1];
if (x1 != x2) t += g[x2][y2];
for (int a = 0; a <= 1; a ++)
for (int b = 0; b <= 1; b ++)
{
f[k][x1][x2] = max(f[k][x1][x2], f[k-1][x1-a][x2-b] + t);
}
}
printf("%d", f[n+m][n][n]);
return 0;
}