#include <string> // std::string #include <iostream> // std::cout #include <sstream> #include <climits> using namespace std; int n; int main() { string tmp; getline(cin, tmp); stringstream ss(tmp); ss >> n; // read int a[n][n]; int i,j; for(i=0; i<n; i++) { string l; getline(cin, l); stringstream ls(l); for(j=0; j<n; j++) ls >> a[i][j]; } // find int max = INT_MIN; for(int i1=0; i1<n; i1++) for(int j1=0; j1<n; j1++) for(int i2=i1; i2<n; i2++) for(int j2=0; j2<n; j2++) { int val = 0; // compute val int min_i = i1 < i2 ? i1 : i2; int min_j = j1 < j2 ? j1 : j2; int max_i = i1 > i2 ? i1 : i2; int max_j = j1 > j2 ? j1 : j2; // up & down border for(int k=0; k <= (max_j-min_j); k++) { val+=a[min_i][k + min_j]; if (max_i != min_i) { val+=a[max_i][k + min_j]; } } // left & right for(int k=1; k < (max_i-min_i); k++) { val+=a[k + min_i][min_j]; if (max_j != min_j) { val+=a[k + min_i][max_j]; } } if (val > max) { max = val; } } cout << max; }