H,W = map(int,input().split()) A = [[0 for _ in range(W+2)]] for _ in range(H): a = [0]+list(map(int,input().split())) A.append(a) C = {} for i in range(1,H+1): for di in [-1,0,1]: for dj in [-1,0,1]: if di==dj==0:continue cnt = A[i][1] y = i x = 1 trace = [(i,1)] while True: if y+di<1 or y+di>H or x+dj<1 or x+dj>W:break y += di x += dj cnt += A[y][x] trace.append((y,x)) C[tuple(trace)]=cnt for di in [-1,0,1]: for dj in [-1,0,1]: if di==dj==0:continue cnt = A[i][W] y = i x = W trace = [(y,x)] while True: if y+di<1 or y+di>H or x+dj<1 or x+dj>W:break y += di x += dj cnt += A[y][x] trace.append((y,x)) C[tuple(trace)] = cnt for j in range(2,W): for di in [-1,0,1]: for dj in [-1,0,1]: if di==dj==0:continue cnt = A[1][j] y = 1 x = j trace = [(y,x)] while True: if y+di<1 or y+di>H or x+dj<1 or x+dj>W:break y += di x += dj cnt += A[y][x] trace.append((y,x)) C[tuple(trace)] = cnt for di in [-1,0,1]: for dj in [-1,0,1]: if di==dj==0:continue cnt = A[H][j] y = H x = j trace = [(y,x)] while True: if y+di<1 or y+di>H or x+dj<1 or x+dj>W:break y += di x += dj cnt += A[y][x] trace.append((y,x)) C[tuple(trace)] = cnt ans = 0 for a in C: for b in C: cnt = C[a] for y,x in b: if (y,x) not in a: cnt += A[y][x] ans = max(ans,cnt) print(ans)