#include <stdio.h> char a[5050][5050]; bool c[5050][5050]={false}; int b[100][100]; int n; int to(int x1,int x2); int sum(int x1,int x2,int y1,int y2); int init(); int f(int x1,int x2,int y1,int y2); int main() { init(); printf("%d/n",f(0,n-1,0,n-1)); return 0; } int to(int x1,int x2) { return (201-(x1+1))*(x1+1)/2+(x2+1)-100; } int init() { scanf("%d",&n); int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&b[i][j]); return 0; } int sum(int x1,int x2,int y1,int y2) { int i,j;int sum1=0; for(i=x1;i<=x2;i++) for(j=y1;j<=y2;j++) sum1+=b[i][j]; return sum1; } int f(int x1,int x2,int y1,int y2) { if(c[to(x1,x2)][to(y1,y2)]) return a[to(x1,x2)][to(y1,y2)]; int max;int temp; max=sum(x1,x2,y1,y2); if(x1!=99&&x1!=x2) { temp=f(x1+1,x2,y1,y2); if(max<temp)max=temp; } if(x2!=0&&x1!=x2) { temp=f(x1,x2-1,y1,y2); if(max<temp)max=temp; } if(y1!=99&&y1!=y2) { temp=f(x1,x2,y1+1,y2); if(max<temp)max=temp; } if(y2!=0&&y1!=y2) { temp=f(x1,x2,y1,y2-1); if(max<temp)max=temp; } a[to(x1,x2)][to(y1,y2)]=max; c[to(x1,x2)][to(y1,y2)]=true; return max; }