#include <bits/stdc++.h>
using namespace std;
const int MAXN = 305;
const int INF = 1e9 + 5;
int tablero[MAXN][MAXN];
int dp[MAXN][MAXN][MAXN];
int N;
int solve(int i, int j, int k) {
  if (i >= N or j >= N or k >= N or (i + j - k) >= N) return -INF;
  if (dp[i][j][k] != -INF) return dp[i][j][k];
  return dp[i][j][k] =
             max({solve(i + 1, j, k + 1), solve(i + 1, j, k),
                  solve(i, j + 1, k + 1), solve(i, j + 1, k)}) +
             +tablero[i][j] +
             ((i == k and j == (i + j - k)) ? 0 : tablero[k][i + j - k]);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  ;
  cin >> N;
  for (int i = 0; i < int(MAXN); i++)
    for (int j = 0; j < int(MAXN); j++)
      for (int k = 0; k < int(MAXN); k++) dp[i][j][k] = -INF;
  for (int i = 0; i < int(N); i++)
    for (int j = 0; j < int(N); j++) cin >> tablero[i][j];
  dp[N - 1][N - 1][N - 1] = tablero[N - 1][N - 1];
  cout << solve(0, 0, 0);
  return 0;
}
