#include #include using namespace std; int N, i, j, dl; const int DIMM = 56; const int INF = 2e+9; int A[DIMM][DIMM], S[DIMM][DIMM]; int result = -INF; inline int sum(int i1, int j1, int i2, int j2){ if (i1 > i2 || j1 > j2) return 0; return S[i2][j2] - S[i2][j1 - 1] - S[i1 - 1][j2] + S[i1 - 1][j1 - 1]; } inline int Max(int q, int w){ if(q > w) return(q); return(w); } int main(){ // std::cin.sync_with_stdio(false); freopen("f.in","r",stdin); cin >> N; for(i=1;i<=N;++i) for(j=1;j<=N;++j){ cin >> A[i][j]; S[i][j]=A[i][j]+S[i-1][j]+S[i][j-1]-S[i-1][j-1]; } if(N==1){ cout << A[1][1] << '\n'; }else{ for(i = 1; i <= N; ++i) for(j = 1; j <= N; ++j) for(dl = N - Max(i,j) ; dl >= 0 ; --dl) result = Max(result, sum(i, j, i, j+dl) + sum(i+dl, j, i+dl, j+dl)+ sum(i+1, j, i+dl-1, j) + sum(i+1, j+dl, i+dl-1, j+dl)); cout << result << '\n' ; } return(0); }