#include #include #include using namespace std; const int INF = std::numeric_limits::max()>>1; int main() { int n; cin>>n; int smax=-INF; vector> s_col(n+1,vector(n+1)); vector> s_row(n+1,vector(n+1)); for(int i=0;i<=n;++i) s_row[0][i]=0; for(int i=0;i<=n;++i) s_row[i][0]=0; for(int i=0;i<=n;++i) s_col[0][i]=0; for(int i=0;i<=n;++i) s_col[i][0]=0; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j){ cin>>s_row[i][j]; if(s_row[i][i]>smax) smax=s_row[i][j]; s_col[i][j]=s_row[i][j]; } for(int i=2;i<=n;++i) for(int j=1;j<=n;++j) s_col[i][j]+=s_col[i-1][j]; for(int i=1;i<=n;++i) for(int j=2;j<=n;++j) s_row[i][j]+=s_row[i][j-1]; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ for(int k=1; i+k<=n && j+k<=n; ++k){ int curr = s_row[i+k][j+k] + s_row[i][j+k] + s_col[i+k-1][j+k] + s_col[i+k-1][j]; curr -= s_row[i+k][j-1] + s_row[i][j-1] + s_col[i][j+k] + s_col[i][j]; if(curr>smax) smax=curr; } } } cout<