#include <iostream>
using namespace std;
#define N 110
int matrix[N][N];
int maxSubArray(int* array, int n)
{
int maxSum = INT_MIN;
int tempSum = 0;
for (int i = 0; i < n; i++)
{
tempSum += array[i];
maxSum = maxSum < tempSum ? tempSum : maxSum;
if (tempSum < 0)
{
tempSum = 0;
}
}
return maxSum;
}
int main()
{
int n;
while (cin >> n && n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> matrix[i][j];
}
}
int* partialSum = new int[n];
int maxSum = INT_MIN;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
partialSum[j] = 0;
}
for (int k = i; k < n; k++)
{
for (int m = 0; m < n; m++)
{
partialSum[m] += matrix[k][m];
}
int tempSum = maxSubArray(partialSum, n);
maxSum = maxSum < tempSum ? tempSum : maxSum;
}
}
delete[] partialSum;
partialSum = NULL;
cout << maxSum << endl;
}
//getchar();
return 0;
}
using namespace std;
#define N 110
int matrix[N][N];
int maxSubArray(int* array, int n)
{
int maxSum = INT_MIN;
int tempSum = 0;
for (int i = 0; i < n; i++)
{
tempSum += array[i];
maxSum = maxSum < tempSum ? tempSum : maxSum;
if (tempSum < 0)
{
tempSum = 0;
}
}
return maxSum;
}
int main()
{
int n;
while (cin >> n && n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> matrix[i][j];
}
}
int* partialSum = new int[n];
int maxSum = INT_MIN;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
partialSum[j] = 0;
}
for (int k = i; k < n; k++)
{
for (int m = 0; m < n; m++)
{
partialSum[m] += matrix[k][m];
}
int tempSum = maxSubArray(partialSum, n);
maxSum = maxSum < tempSum ? tempSum : maxSum;
}
}
delete[] partialSum;
partialSum = NULL;
cout << maxSum << endl;
}
//getchar();
return 0;
}