//最大子阵和O(nm^2)
code:
#include<iostream>
using namespace std;
//最大子段和O(n)
const int MaxN=100;
int n,Array[MaxN+1],Matrix[MaxN+1][MaxN+1];
int MaxArray()
{
int temp=0,sum=INT_MIN;
for(int i=0;i<n;i++)
{
if(temp>0) temp+=Array[i];
else temp=Array[i];
if(temp>sum) sum=temp;
}
return sum;
}
//最大子阵和O(nm^2)
int MaxMatrix()
{
int i,j,k,temp,sum=INT_MIN;
for(i=0;i<n;i++)
{
fill(Array,Array+n,0);
for(j=i;j<n;j++)
{
for(k=0;k<n;k++)
{
Array[k]+=Matrix[j][k];
}
temp=MaxArray();
if(temp>sum) sum=temp;
}
}
return sum;
}
int main()
{
while (cin>>n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>Matrix[i][j];
}
}
cout<<MaxMatrix()<<endl;
}
return 0;
}