#include #include #define maxn 55 #define inf 0x3f3f3f3f using namespace std; int n; int a[maxn][maxn],s[maxn][maxn]; int sol=-inf; void read() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]; } int det(int X,int Y) { int Max=-inf,x,y,nr; for(int i=1;i+X-1<=n;i++) for(int j=1;j+Y-1<=n;j++) { x=i+X-1; y=j+Y-1; nr=0; for(int k=j;k<=y;k++) nr+=a[i][k]; for(int k=i+1;k<=x;k++) nr+=a[k][y]; for(int k=y-1;k>=j;k--) nr+=a[x][k]; for(int k=x-1;k>i;k--) nr+=a[k][j]; Max=max(Max,nr); } return Max; } void solve() { for(int i=1;i<=n;i++) sol=max(sol,det(i,i)); } int main() { //freopen("maxsquare.in","r",stdin); //freopen("maxsquare.out","w",stdout); read(); solve(); printf("%d",sol); fclose(stdin); fclose(stdout); return 0; }