#include <bits/stdc++.h>
using namespace std;
int dp1[1005][1005] = {0}, dp2[1005][1005] = {0}, dp3[1005][1005] = {0},
    dp4[1005][1005] = {0}, a[1005][1005], maxn = 0;
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) cin >> a[i][j];
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      dp1[i][j] = max(dp1[i - 1][j], dp1[i][j - 1]) + a[i][j];
  for (int i = 1; i <= n; ++i)
    for (int j = m; j >= 1; --j)
      dp2[i][j] = max(dp2[i - 1][j], dp2[i][j + 1]) + a[i][j];
  for (int i = n; i >= 1; --i)
    for (int j = 1; j <= m; ++j)
      dp3[i][j] = max(dp3[i + 1][j], dp3[i][j - 1]) + a[i][j];
  for (int i = n; i >= 1; --i)
    for (int j = m; j >= 1; --j)
      dp4[i][j] = max(dp4[i + 1][j], dp4[i][j + 1]) + a[i][j];
  for (int i = 2; i <= n - 1; ++i)
    for (int j = 2; j <= m - 1; ++j) {
      maxn = max(maxn,
                 dp1[i - 1][j] + dp2[i][j + 1] + dp3[i][j - 1] + dp4[i + 1][j]);
      maxn = max(maxn,
                 dp1[i][j - 1] + dp2[i - 1][j] + dp3[i + 1][j] + dp4[i][j + 1]);
    }
  cout << maxn << endl;
}
