#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int n;
int a[110][110];
int h[110][110];
int f[110];
int mmax;
int d[110];//d[i]为以i结尾的f段的最大值
void dp()
{
int i;
d[0]=f[0];
if(mmax<d[0])
{
mmax=d[0];
}
for(i=1;i<n;i++)
{
if(d[i-1]>=0)
{
d[i]=d[i-1]+f[i];
}
else
{
d[i]=f[i];
}
if(mmax<d[i])
{
mmax=d[i];
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
h[0][i]=a[0][i];
}
for(i=1;i<n;i++)
{
for(j=0;j<n;j++)
{
h[i][j]=h[i-1][j]+a[i][j];
}
}
int k;
mmax=-65530;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//j行到i行的压缩
{
for(k=0;k<n;k++)//k列
{
f[k]=h[i][k]-h[j][k]+a[j][k];
}
dp();
}
}
printf("%d\n",mmax);
}
return 0;
}