#include <bits/stdc++.h>
using namespace std;
int a[1111][1111];
int d1[1111][1111], d2[1111][1111], b1[1111][1111], b2[1111][1111],
    bf[1111][1111], df[1111][1111];
int INF = -500000000;
void solution() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (b1[i - 1][j] > b1[i][j - 1] && i != 1) {
        b1[i][j] = b1[i - 1][j] + a[i][j];
        bf[i][j] = 1;
      } else {
        b1[i][j] = b1[i][j - 1] + a[i][j];
        bf[i][j] = 0;
      }
    }
  for (int i = n; i >= 1; i--)
    for (int j = 1; j <= m; j++) {
      if (d1[i + 1][j] > d1[i][j - 1] && i != n) {
        d1[i][j] = d1[i + 1][j] + a[i][j];
        df[i][j] = 1;
      } else {
        d1[i][j] = d1[i][j - 1] + a[i][j];
        df[i][j] = 0;
      }
    }
  for (int i = n; i >= 1; i--)
    for (int j = m; j >= 1; j--)
      b2[i][j] = a[i][j] +
                 ((b2[i + 1][j] < b2[i][j + 1]) ? b2[i][j + 1] : b2[i + 1][j]);
  for (int i = 1; i <= n; i++)
    for (int j = m; j >= 1; j--)
      d2[i][j] = a[i][j] +
                 ((d2[i - 1][j] < d2[i][j + 1]) ? d2[i][j + 1] : d2[i - 1][j]);
  for (int i = 0; i <= n + 1; i++) {
    d1[i][0] = INF;
    d1[i][m + 1] = INF;
    b1[i][0] = INF;
    b1[i][m + 1] = INF;
    d2[i][0] = INF;
    d2[i][m + 1] = INF;
    b2[i][0] = INF;
    b2[i][m + 1] = INF;
  }
  for (int i = 0; i <= m + 1; i++) {
    d1[0][i] = INF;
    d1[n + 1][i] = INF;
    b1[0][i] = INF;
    b1[n + 1][i] = INF;
    d2[0][i] = INF;
    d2[n + 1][i] = INF;
    b2[0][i] = INF;
    b2[n + 1][i] = INF;
  }
  int ans = 0, temp = 0;
  for (int i = 2; i <= n - 1; i++)
    for (int j = 2; j <= m - 1; j++) {
      if (bf[i][j] + df[i][j] == 1) {
        if (bf[i][j] == 1)
          temp = b2[i + 1][j] + b1[i - 1][j] + d2[i][j + 1] + d1[i][j - 1];
        else
          temp = d2[i - 1][j] + d1[i + 1][j] + b2[i][j + 1] + b1[i][j - 1];
        if (temp > ans) ans = temp;
      } else {
        int x1 = b1[i][j - 1] + b2[i][j + 1] + d1[i + 1][j] + d2[i - 1][j];
        int x2 = b1[i - 1][j] + b2[i + 1][j] + d1[i][j - 1] + d2[i][j + 1];
        temp = ((x1 < x2) ? x2 : x1);
        if (temp > ans) ans = temp;
      }
    }
  printf("%d\n", ans);
}
int main() { solution(); }
