#include<stdio.h> int GetMaxs(int m,int n,int a[101][101]); int MaxSum(int n,int *a); int main(){ int n,a[101][101]; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); int sum=GetMaxs(n,n,a); printf("%d\n",sum); } return 0; } int GetMaxs(int m,int n,int a[101][101]){ int sum=-0x7fffffff; int *b=new int[n+1]; for(int i=1;i<=m;i++){ for(int k=1;k<=n;k++) b[k]=0; for(int j=i;j<=m;j++){ for(int k=1;k<=n;k++) b[k]+=a[j][k]; int max=MaxSum(n,b); if(max>sum)sum=max; } } return sum; } int MaxSum(int n,int *a){ int sum = 0,b=0; for(int i=1;i<=n;i++){ if(b>0)b+=a[i]; else b=a[i]; if(b>sum)sum=b; } return sum; }