#include <iostream>
#include <algorithm>
using namespace std;
int H, W, a[203][203], lt[403], rt[403], dp[403][203][203];
int main() {
	cin >> H >> W;
	for (int i = 0; i < H; i++) {
		for (int j = 0; j < W; j++) cin >> a[i][j];
	}
	for (int i = 0; i < H; i++) lt[i] = 0;
	for (int i = 0; i < W; i++) rt[i] = i + 1;
	for (int i = H; i < H + W - 1; i++) lt[i] = i - H + 1;
	for (int i = W; i < H + W - 1; i++) rt[i] = W;
	dp[0][0][0] = a[0][0];
	for (int i = 1; i < H + W - 1; i++) {
		for (int j = lt[i]; j < rt[i]; j++) {
			for (int k = lt[i]; k < rt[i]; k++) {
				int p = (j != k ? a[i - j][j] + a[i - k][k] : a[i - j][j]);
				for (int dj = -1; dj <= 0; dj++) {
					for (int dk = -1; dk <= 0; dk++) {
						if (j + dj >= 0 && k + dk >= 0) dp[i][j][k] = max(dp[i][j][k], dp[i - 1][j + dj][k + dk] + p);
					}
				}
			}
		}
	}
	cout << dp[H + W - 2][W - 1][W - 1] << endl;
	return 0;
}