#include <stdio.h>

int l[51][51];//vsota vseh ĹĄtevil od 1 do x v tej vrstici
int u[51][51];//vsota vseh ĹĄtevil od 1 do x v tem stolpcu

int main(){
	int N;
	int sum;
	int bigsum = -9999999;
	scanf("%i", &N);

	for(int i=0; i<=50; i++){
		l[i][0] = 0;
		l[0][i] = 0;
		u[0][i] = 0;
		u[i][0] = 0;
	}
	for(int y1=1; y1<=N; y1++){
		for(int x1 = 1; x1<=N; x1++){
			scanf("%i", &(l[x1][y1]));		//vnos podatkov in sestevanje v tabelah(po stolpcih/vrsticah
			u[x1][y1] = l[x1][y1]+u[x1][y1-1];
			l[x1][y1] += l[x1-1][y1];
		}
	}

	for(int x1 = 1; x1<=N; x1++){
		for(int y1=1; y1<=N; y1++){//izbira zacetne tocke
			for(int d=0;  ;d++){//dolzina stranice kvadrata
				if(d>N-x1 || d>N-y1){
					break;
				}
				if(d == 0){
					sum = l[x1][y1]-l[x1-1][y1];
				}
				else{
					sum = l[x1+d][y1]-l[x1][y1];
					sum += u[x1][y1+d]-u[x1][y1];
					sum += l[x1+d][y1+d]-l[x1][y1+d];
					sum += u[x1+d][y1+d]-u[x1+d][y1];
				}
				if(sum>bigsum){
					bigsum=sum;
				}
			}
		}
	}

	printf("%i", bigsum);


return 0;
}