#include using namespace std; using ll=long long; using ld=long double; ld pie=3.141592653589793; ll mod=998244353; ll inf=10000000000000;//10^17 int main(){ ll h,w; cin >> h >> w; vector>a(h+2,vector(w+2)); for (ll i = 0; i < h; i++) { for (ll j = 0; j < w; j++) { cin >> a[i+1][j+1]; } } ll now=0; vector>memo(h+2,vector(w+2,0)); ll x=0,y=0; ll d=0; ll ans=0; while (1) { ll xx=0,yy=0; ll dd=0; while (1) { for (ll i = -1; i <=1; i++) { for (ll j = -1; j <=1; j++) { if (i==0&&j==0) { continue; } for (ll k = -1; k <=1; k++) { for (ll l = -1; l <=1; l++) { ll aa=0; if (k==0&&l==0) { continue; } now++; for (ll n = 1; n >=0; n++) { if (x+i*n<=0||x+i*n>=h+1||y+j*n<=0||y+j*n>=w+1) { break; } memo[x+i*n][y+j*n]=now; aa+=a[x+i*n][y+j*n]; } for (ll n = 1; n >=0; n++) { if (xx+k*n<=0||xx+k*n>=h+1||yy+l*n<=0||yy+l*n>=w+1) { break; } if (memo[xx+k*n][yy+l*n]!=now) { aa+=a[xx+k*n][yy+l*n]; } } ans=max(ans,aa); now++; } } } } if (dd==0) { yy++; if (yy==w+1) { dd=1; } }else if (dd==1) { xx++; if (xx==h+1) { dd=2; } }else if (dd==2) { yy--; if (yy==0) { dd=3; } }else{ xx--; if (xx==-1) { break; } } } if (d==0) { y++; if (y==w+1) { d=1; } }else if (d==1) { x++; if (x==h+1) { d=2; } }else if (d==2) { y--; if (y==0) { d=3; } }else{ x--; if (x==-1) { break; } } } cout << ans << endl; }