#include #include using namespace std; #define Nmax 64 int A[Nmax][Nmax]; int L[Nmax][Nmax]; int C[Nmax][Nmax]; int N; int main() { // freopen("test.in", "r", stdin); scanf("%d", &N); int best = -1000000000; for (int i=1; i<=N; ++i) for (int j=1; j<=N; ++j) { scanf("%d", &A[i][j]); L[i][j] = L[i][j-1] + A[i][j]; C[i][j] = C[i-1][j] + A[i][j]; best = max(best, A[i][j]); } for (int i=1; i<=N; ++i) for (int j=1; j<=N; ++j) for (int k=j; k<=N; ++k){ best = max(best, C[k][i] - C[j-1][i]); best = max(best, L[i][k] - L[i][j-1]); } for (int i=1; i<=N; ++i) for (int j=1; j<=N; ++j) for (int x=i+1; x<=N; ++x) for (int y=j+1; y<=N; ++y) { int v1 = L[i][y] - L[i][j-1] + L[x][y] - L[x][j-1]; int v2 = C[x][j] - C[i-1][j] + C[x][y] - C[i-1][y]; best = max(best, v1+v2-A[i][j]-A[x][j]-A[i][y]-A[x][y]); } printf("%d\n", best); return 0; }