#include #include using namespace std; #define maxn 1010 int n, m; int sol; int v[maxn][maxn]; int d[maxn][maxn][4]; int main() { // freopen("snake.in", "r", stdin); sol=-10001; scanf("%d", &n); for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j) { scanf("%d", &v[i][j]); sol=max(sol, v[i][j]); } for(int i=1; i<=n; ++i) { for(int j=1; j<=n; ++j) { d[i][j][0]=max(max(0, d[i][j-1][0]), d[i][j-1][3])+v[i][j]; d[i][j][1]=max(max(0, d[i-1][j][1]), d[i-1][j][0])+v[i][j]; d[i][j][3]=max(max(0, d[i-1][j][3]), d[i-1][j][2])+v[i][j]; } for(int j=n; j; --j) d[i][j][2]=max(max(0, d[i][j+1][2]), d[i][j+1][1])+v[i][j]; for(int j=1; j<=n; ++j) for(int k=0; k<4; ++k) sol=max(sol, d[i][j][k]); } printf("%d\n", sol); return 0; }