#include <iostream>
#include <vector>
#include <limits>
using namespace std;

const int INF = std::numeric_limits<int>::max()>>1;

int main()
{

    int n; cin>>n;
    int smax=-INF;

    vector<vector<int>> s_col(n+1,vector<int>(n+1));
    vector<vector<int>> s_row(n+1,vector<int>(n+1));

    for(int i=0;i<=n;++i) s_row[0][i]=0;
    for(int i=0;i<=n;++i) s_row[i][0]=0;
    for(int i=0;i<=n;++i) s_col[0][i]=0;
    for(int i=0;i<=n;++i) s_col[i][0]=0;


    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j){
            cin>>s_row[i][j];
            if(s_row[i][i]>smax) smax=s_row[i][j];
            s_col[i][j]=s_row[i][j];
        }

    for(int i=2;i<=n;++i) for(int j=1;j<=n;++j)
            s_col[i][j]+=s_col[i-1][j];
    for(int i=1;i<=n;++i) for(int j=2;j<=n;++j)
            s_row[i][j]+=s_row[i][j-1];

    for(int i=1;i<=n;++i){
        for(int j=1;j<=n;++j){
            for(int k=1; i+k<=n && j+k<=n; ++k){
                int curr = s_row[i+k][j+k] + s_row[i][j+k] + s_col[i+k-1][j+k] + s_col[i+k-1][j];
                curr    -= s_row[i+k][j-1] + s_row[i][j-1] + s_col[i][j+k] + s_col[i][j];
                if(curr>smax)   smax=curr;
            }
        }
    }

    cout<<smax<<'\n';

    return 0;
}