##Solution: C++  Problem: http://onlinejudge-problems.blogspot.com.co/2016/04/uva-108-maximum-sum-solution.html
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <sstream>
#include <utility>
#include <set>
#include <math.h>
using namespace std;

#define Dif(i,j,k) (Table[i+k][j] - Table[i][j])
#define MAXN 110

int N, MAX;
int Table[MAXN][MAXN];

void ReadCase()
 {
   int i, j;
   for(i = 1; i<=N; i++)
           for(j  = 0; j<N; j++)
                   scanf("%d",&Table[i][j]);          
}

void Cal()
{
   int i, j, k, t;
   for(i = 1; i<=N; i++)
   {
           for(j = 0; j<N; j++)
                  Table[i][j] =  Table[i][j] + Table[i-1][j];
   }

   MAX = Table[1][0];
   for(k = 1; k<=N; k++) 
   {
           for(i = 0; i<=N-k; i++)
           {
                    for(t = 0, j = 0; j<N; j++)
                   {
                          if(t>=0)
                                  t+= Dif(i,j,k);
                          else 
                                  t = Dif(i,j,k);
                          if(t>MAX) 
                                  MAX = t;
                   }
           }
   }                
   printf("%d\n",MAX);  
}

void FREE() 
{
   int i, j;
   for(i = 0; i<=N; i++)
           for(j = 0; j<=N; j++)
                   Table[i][j] = 0;
}

int main() 
{
    int f = 0;  
        while(scanf("%d",&N) == 1) 
        {
           if(f++)
                 FREE();
           ReadCase();
           Cal();          
        }
        return 0;
}