#include<iostream>
using namespace std;
#include<algorithm>
int a[110][110], dp[1000];
int main()
{
int n;
while (scanf_s("%d",&n))
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf_s("%d", &a[i][j]);
int ans = -128, sum;//题意限制元素(-127-127)。
for(int i=0;i<n;i++)
{
memset(dp, 0, sizeof(dp));
for (int j = i; j < n; j++)
{
sum = -2;
for (int k = 0; k < n; k++)
dp[k] += a[j][k];
for (int k = 0; k < n; k++)
{
if (sum < 0)sum = dp[k];
else sum += dp[k];
if (sum > ans)ans = sum;
}
}
}
cout << ans << endl;
}
}
化二维为一维,再求出相同行数每一列的最大值