#include <iostream>
using namespace std;
const int maxn=100;
int ary[maxn];
int matrix[maxn][maxn];
int total[maxn][maxn];
int dp[maxn];
int maxsub(int n){
    dp[0]=ary[0];
    int m=dp[0];
    for(int i=1;i<n;i++){
        dp[i]=max(dp[i-1]+ary[i],ary[i]);
        m=max(m,dp[i]);
    }
    return m;

}
void Minput(int n){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>matrix[i][j];
        }
    }
}
void Gtotal(int n){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(i==0) total[i][j]=matrix[i][j];
            else{
                total[i][j]=total[i-1][j]+matrix[i][j];
            }
        }
    }
}
int findMaxSubMatrix(int n){
    int MAX=-100;
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            for(int k=0;k<n;k++){
                if(i==0) ary[k]=total[j][k];
                else ary[k]=total[j][k]-total[i-1][k];
            }
            MAX=max(MAX,maxsub(n));
        }
    }
    return MAX;
}
int main() {
    int n;
    while(cin>>n){
        Minput(n);
        Gtotal(n);
        cout<<findMaxSubMatrix(n)<<endl;

    }
}