#include <stdio.h>
int a[100][100]={0};
int N;
int Line[100];
int KadaneAlg();
int MatSum(int a,int b);
int main()
{
int p=-100;
int Max=-100;
while(scanf("%d",&N)==1)
{
Max=-100;
p =-100;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
scanf("%d",&a[i][j]);
}
for(int k=0;k<N;k++)
{
for(int l=k;l<N;l++)
{
p = MatSum(k,l);
if(p>Max)
Max = p;
}
}
printf("%d\n",Max);
}
return 0;
}
int MatSum(int c,int b)
{
int p;
for(int i=0;i<N;i++)
{
p =0;
for(int j=c;j<=b;j++)//row
{
p += a[j][i];
}
Line[i] = p;
}
return KadaneAlg();
}
int KadaneAlg()
{
int max_so_far = 0, max_ending_here = 0;
int i;
for(i = 0; i < N; i++)
{
max_ending_here = max_ending_here + Line[i];
if(max_ending_here < 0)
max_ending_here = 0;
else if (max_so_far < max_ending_here)
max_so_far = max_ending_here;
}
return max_so_far;
}