#include using namespace std; #define MAX_N 51 #define INF 1<<29 int b[MAX_N][MAX_N][MAX_N], v[MAX_N][MAX_N], n,maxim; void readData() { int i, j; cin >> n; maxim = -INF; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { cin >> v[i][j]; b[i][j][1] = v[i][j]; } } } void compute() { int i, j, k, sum = 0; for (k = 2; k < n; k++) { for (i = k; i <= n; i++) { for (j = n - k + 1; j >= 1; j--) { b[i][j][k] = v[i][j] + b[i - 1][j][k - 1] + b[i][j + 1][k - 1] + v[i - k + 1][j + k - 1]; if (k != 2) b[i][j][k] = b[i][j][k] - 2 * v[i - 1][j + 1]; if (b[i][j][k] > maxim) maxim = b[i][j][k]; } } } for (i = 1; i <= n; i++) sum = sum + v[1][i]; for (i = 2; i <= n; i++) sum = sum + v[i][n]; for (i = n - 1; i >= 1; i--) sum = sum + v[n][i]; for (i = n - 1; i > 1; i--) sum = sum + v[i][1]; if (sum > maxim) maxim = sum; cout << maxim; } int main() { readData(); compute(); return 0; }