#include #include #include #include #include #include #include #include #include #include #include #define pb push_back #define mp make_pair #define f first #define s second #define ll long long const int MAXN = 55; using namespace std; int L[MAXN][MAXN], C[MAXN][MAXN]; int main() { //ifstream cin("test.in"); //ofstream cout("test.out"); int N; cin >> N; vector > matrix(N+1, vector (N+1, 0)); for (int i = 1; i <= N; ++i) { for (int j = 1; j <= N; ++j) { cin >> matrix[i][j] ; L[i][j] = L[i][j - 1] + matrix[i][j] ; C[i][j] = C[i - 1][j] + matrix[i][j]; } } int answer = -1 << 30; for (int i = 1; i <= N; ++i) { for (int j = 1; j <= N; ++j) { answer = max(answer, matrix[i][j]); for (int ii = i + 1; ii <= N; ++ii) { for (int jj = j + 1; jj <= N; ++jj) { if (ii - i != jj - j ) { continue; } int l1 = L[ii][jj] - L[ii][j - 1]; int l2 = L[i][jj] - L[i][j - 1]; int c1 = C[ii][jj] - C[i - 1][jj]; int c2 = C[ii][j] - C[i - 1][j]; int s = l1 + l2 + c1 + c2; s -= matrix[ii][jj]; s -= matrix[i][j]; s -= matrix[i][jj]; s -= matrix[ii][j]; //cerr << i << " " << j << " " << ii << " " << jj << " " << s << "\n"; answer = max(answer, s); } } } } cout << answer << "\n"; return 0; }