#include <bits/stdc++.h>
using namespace std;
int field[201][201];
int H, W;
int dp[201][201][410];
int rs[4] = {0, 0, 1, 1}, re[4] = {0, 1, 0, 1};
int dfs(int sj, int ej, int d) {
  if (sj > W || ej > W || d > H + W) return 0;
  if (dp[sj][ej][d] > 0) {
    return dp[sj][ej][d] - 1;
  }
  int res = 0;
  for (int i = 0; i < 4; i++) {
    res = max(res, dfs(sj + rs[i], ej + re[i], d + 1));
  }
  res += field[d - sj][sj] + field[d - ej][ej];
  if (sj == ej) res -= field[d - sj][sj];
  dp[sj][ej][d] = res + 1;
  return res;
}
int main() {
  cin >> H >> W;
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> field[i][j];
    }
  }
  cout << dfs(0, 0, 0) << endl;
  return 0;
}
