#include <bits/stdc++.h>
using namespace std;
const int maxn = 310;
int a[maxn][maxn];
int dp[maxn][maxn][maxn << 1];
int main() {
  int n, i, j, k;
  scanf("%d", &n);
  for (i = 1; i <= n; i++)
    for (j = 1; j <= n; j++) scanf("%d", &a[i][j]);
  for (i = 1; i <= n; i++)
    for (j = 1; j <= n; j++)
      for (k = 0; k <= n + n; k++) dp[i][j][k] = -11111111;
  dp[1][1][0] = a[1][1];
  int tot = 2 * n - 2;
  for (i = 0; i < tot; i++) {
    for (j = 1; j <= min(n, i + 1); j++)
      for (k = 1; k <= min(n, i + 1); k++) {
        if (j + 1 <= n && k + 1 <= n && i + 2 - k <= n && i + 2 - j <= n &&
            i + 2 - k >= 1 && i + 2 - j >= 1) {
          if (j >= n || k >= n) continue;
          int add = a[j + 1][i + 2 - j] + (j == k ? 0 : a[k + 1][i + 2 - k]);
          dp[j + 1][k + 1][i + 1] =
              max(dp[j + 1][k + 1][i + 1], dp[j][k][i] + add);
        }
        if (j + 1 <= n && i + 3 - k <= n && i + 2 - j <= n && i + 3 - k >= 1 &&
            i + 2 - j >= 1) {
          int add =
              a[j + 1][i + 2 - j] + (((j + 1 != k) || (i + 2 - j != i + 3 - k))
                                         ? a[k][i + 3 - k]
                                         : 0);
          dp[j + 1][k][i + 1] = max(dp[j + 1][k][i + 1], dp[j][k][i] + add);
        }
        if (i + 3 - j <= n && k + 1 <= n && i + 3 - j >= 1 && i + 2 - k >= 1 &&
            i + 2 - k <= n) {
          int add =
              a[j][i + 3 - j] + (((j != k + 1) || (i + 3 - j != i + 2 - k))
                                     ? a[k + 1][i + 2 - k]
                                     : 0);
          dp[j][k + 1][i + 1] = max(dp[j][k + 1][i + 1], dp[j][k][i] + add);
        }
        if (i + 3 - j <= n && i + 3 - k <= n && i + 3 - j >= 1 &&
            i + 3 - k >= 1) {
          int add = a[j][i + 3 - j] + (j == k ? 0 : a[k][i + 3 - k]);
          dp[j][k][i + 1] = max(dp[j][k][i + 1], dp[j][k][i] + add);
        }
      }
  }
  printf("%d\n", dp[n][n][tot]);
  return 0;
}
