#include <iostream> using namespace std; const int maxn=100; int ary[maxn]; int matrix[maxn][maxn]; int total[maxn][maxn]; int dp[maxn]; int maxsub(int n){ dp[0]=ary[0]; int m=dp[0]; for(int i=1;i<n;i++){ dp[i]=max(dp[i-1]+ary[i],ary[i]); m=max(m,dp[i]); } return m; } void Minput(int n){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>matrix[i][j]; } } } void Gtotal(int n){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==0) total[i][j]=matrix[i][j]; else{ total[i][j]=total[i-1][j]+matrix[i][j]; } } } } int findMaxSubMatrix(int n){ int MAX=-100; for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ for(int k=0;k<n;k++){ if(i==0) ary[k]=total[j][k]; else ary[k]=total[j][k]-total[i-1][k]; } MAX=max(MAX,maxsub(n)); } } return MAX; } int main() { int n; while(cin>>n){ Minput(n); Gtotal(n); cout<<findMaxSubMatrix(n)<<endl; } }