#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>
#include <algorithm>

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
using namespace std;

const int INF = 0x3f3f3f3f;
const double EPS = 0.000000001;
const double PI = 3.141592653589793;
const long long LLINF = 99999999999999999LL;
const int MAX_N = 10002;

int N;
int A[MAX_N][MAX_N], D[MAX_N][MAX_N], sumLeft[MAX_N][MAX_N], sumRight[MAX_N][MAX_N];
int bestL[MAX_N], bestR[MAX_N];

int main()
{
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif

    cin >> N;
    for(int i = 1; i <= N; ++i) {
        for(int j = 1; j <= N; ++j) {
            cin >> A[i][j];
        }
    }

    for(int i = 1; i <= N; ++i) {
        for(int j = 1; j <= N; ++j) {
            sumLeft[i][j] = sumLeft[i][j - 1] + A[i][j];
        }
        for(int j = N; j >= 1; --j) {
            sumRight[i][j] = sumRight[i][j + 1] + A[i][j];
        }
    }

    int minVal = 0;
    for(int j = 1; j <= N; ++j) {
        D[N][j] = sumLeft[N][j] - minVal;
        minVal = min(minVal, sumLeft[N][j]);
    }

    minVal = 0;
    for(int j = N; j >= 1; --j) {
        D[N][j] = max(D[N][j], sumRight[N][j] - minVal);
        minVal = min(minVal, sumRight[N][j]);
    }

    for(int i = N - 1; i >= 1; --i) {
        bestL[0] = bestR[N + 1] = -INF;
        for(int j = 1; j <= N; ++j) {
            bestL[j] = max(bestL[j - 1], D[i + 1][j] + sumRight[i][j]);
        }
        for(int j = N; j >= 1; --j) {
            bestR[j] = max(bestR[j + 1], D[i + 1][j] + sumLeft[i][j]);
        }

        for(int j = 1; j <= N; ++j) {
            D[i][j] = max(A[i][j], A[i][j] + D[i + 1][j]);

            D[i][j] = max(D[i][j], A[i][j] + bestL[j - 1] - sumRight[i][j]);
            D[i][j] = max(D[i][j], A[i][j] + bestR[j + 1] - sumLeft[i][j]);
        }
    }

    int ans = A[1][1];
    for(int i = 1; i <= N; ++i) {
        for(int j = 1; j <= N; ++j) {
            ans = max(ans, D[i][j]);
        }
    }

    printf("%d\n", ans);

    return 0;
}