#include <bits/stdc++.h>
using namespace std;
int tab[303][303];
int mem[2 * 303][303][303];
int n;
int rr(int d, int i, int x) {
  int j = d - i;
  int y = d - x;
  if (j == n - 1 && i == n - 1) {
    return tab[i][j];
  }
  if (j == n || i == n || x == n || y == n) return -1 * 1 << 30;
  if (mem[d][i][x] != 1 << 30) return mem[d][i][x];
  if (i == x && j == y) {
    return mem[d][i][x] = max(max(rr(d + 1, i + 1, x + 1), rr(d + 1, i, x + 1)),
                              max(rr(d + 1, i + 1, x), rr(d + 1, i, x))) +
                          tab[i][j];
  } else {
    return mem[d][i][x] = max(max(rr(d + 1, i + 1, x + 1), rr(d + 1, i, x + 1)),
                              max(rr(d + 1, i + 1, x), rr(d + 1, i, x))) +
                          tab[i][j] + tab[x][y];
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) scanf("%d", &tab[i][j]);
  for (int i = 0; i < 2 * 303; i++)
    for (int j = 0; j < 303; j++)
      for (int k = 0; k < 303; k++) mem[i][j][k] = 1 << 30;
  printf("%d\n", rr(0, 0, 0));
  return 0;
}
