#include <bits/stdc++.h>
using namespace std;
int H, W, A[201][201], dp[2][201][201];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> H >> W;
  for (int i = (0); i < (H); i++) {
    for (int j = (0); j < (W); j++) {
      cin >> A[i][j];
    }
  }
  int pos = 0;
  memset(dp, -1, sizeof(dp));
  dp[pos][0][0] = A[0][0];
  for (int i = (1); i < (H + W - 1); i++) {
    pos ^= 1;
    memset(dp[pos], -1, sizeof(dp[pos]));
    for (int j = (0); j < (W); j++) {
      for (int k = (0); k < (W); k++) {
        if (dp[pos ^ 1][j][k] == -1) continue;
        dp[pos][j + 1][k + 1] = max(dp[pos][j + 1][k + 1],
                                    dp[pos ^ 1][j][k] + A[i - (j + 1)][j + 1] +
                                        ((j != k) ? A[i - (k + 1)][k + 1] : 0));
        dp[pos][j + 1][k] =
            max(dp[pos][j + 1][k], dp[pos ^ 1][j][k] + A[i - (j + 1)][j + 1] +
                                       ((j + 1 != k) ? A[i - (k)][k] : 0));
        dp[pos][j][k + 1] = max(dp[pos][j][k + 1],
                                dp[pos ^ 1][j][k] + A[i - (j)][j] +
                                    ((j != k + 1) ? A[i - (k + 1)][k + 1] : 0));
        dp[pos][j][k] = max(dp[pos][j][k], dp[pos ^ 1][j][k] + A[i - (j)][j] +
                                               ((j != k) ? A[i - (k)][k] : 0));
      }
    }
  }
  cout << dp[pos][W - 1][W - 1] << endl;
}
