H, W = map(int, input().split()) W = 2 * H + W - 2 A = [[0] * (H - 1) + list(map(int, input().split())) + [0] * (H - 1) for _ in range(H)] N = W * 3 + H D = [(1, -1), (1, 0), (1, 1), (0, 1)] S = [0] * N for i in range(N): if i < W * 3: y = i // 3 x = 0 d = i % 3 else: y = 0 x = i - W * 3 d = 3 tmp = 0 while 0 <= x < H and 0 <= y < W: tmp += A[x][y] x += D[d][0] y += D[d][1] S[i] = tmp #for i in range(H): #print(*A[i]) #print(S) ans = 0 for i in range(N - 1): if i < W * 3: y1 = i // 3 x1 = 0 d1 = i % 3 else: y1 = 0 x1 = i - W * 3 d1 = 3 for j in range(i + 1, N): tmp = S[i] + S[j] if j < W * 3: y2 = j // 3 x2 = 0 d2 = j % 3 else: x2 = j - W * 3 y2 = 0 d2 = 3 if d2 == 3: if d1 == 0: if 0 <= y1 - x2 < W: tmp -= A[x2][y1 - x2] elif d1 == 1: tmp -= A[x2][y1] elif d1 == 2: if 0 <= y1 + x2 < W: tmp -= A[x2][y1 + x2] ans = max(ans, tmp) #print(i,j,":","a",x1,y1,d1,x2,y2,d2,":",S[i]+S[j],tmp) continue if y1 == y2: tmp -= A[0][y1] #print(i,j,":","b",x1,y1,d1,x2,y2,d2,":",S[i]+S[j],tmp) ans = max(ans, tmp) continue if d2 == 0: if d1 == 2: yt = y2 - y1 if yt % 2 == 0 and yt // 2 < H: tmp -= A[yt // 2][(y2 + y1) // 2] elif d1 == 1: if y2 - y1 < H: tmp -= A[y2 - y1][y1] #print(i,j,":","c",x1,y1,d1,x2,y2,d2,":",S[i]+S[j],tmp) ans = max(ans, tmp) continue if d2 == 1 and d1 == 2: if y2 - y1 < H: tmp -= A[y2 - y1][y2] #print(i, j, ":","d", x1, y1, d1, x2, y2, d2, ":", S[i] + S[j], tmp) ans = max(ans, tmp) continue #print(i, j, ":","e", x1, y1, d1, x2, y2, d2, ":", S[i] + S[j], tmp) ans = max(ans, tmp) print(ans)