правый низ левый верх мин
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int,input().split())))
dp = []
for q in range(M):
dp.append([0]*M)
dp[0][0] = c[0][0]
for j in range(1, M):
dp[0][j] = dp[0][j-1] + c[0][j]
for i in range(1, N):
dp[i][0] = dp[i-1][0] + c[i][0]
for i in range(1, N):
for j in range(1, M):
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + c[i][j]
print(dp[N-1][M-1])
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int,input().split())))
dp = []
for q in range(M):
dp.append([0]*M)
dp[0][0] = c[0][0]
for j in range(1, M):
dp[0][j] = dp[0][j-1] + c[0][j]
for i in range(1, N):
dp[i][0] = dp[i-1][0] + c[i][0]
for i in range(1, N):
for j in range(1, M):
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + c[i][j]
print(dp[N-1][M-1])
левый низ правый верх
N, M = map(int, input().split())
c = []
for _ in range(N):
c.append(list(map(int, input().split())))
dp = []
for _ in range(N):
dp.append([0] * M)
dp[N-1][0] = c[N-1][0]
for i in range(N-2, -1, -1):
dp[i][0] = dp[i+1][0] + c[i][0]
for j in range(1, M):
dp[N-1][j] = dp[N-1][j-1] + c[N-1][j]
for i in range(N-2, -1, -1):
for j in range(1, M):
dp[i][j] = max(dp[i+1][j], dp[i][j-1]) + c[i][j]
print(dp[0][M-1])
N, M = map(int, input().split())
c = []
for _ in range(N):
c.append(list(map(int, input().split())))
dp = []
for _ in range(N):
dp.append([0] * M)
dp[N-1][0] = c[N-1][0]
for i in range(N-2, -1, -1):
dp[i][0] = dp[i+1][0] + c[i][0]
for j in range(1, M):
dp[N-1][j] = dp[N-1][j-1] + c[N-1][j]
for i in range(N-2, -1, -1):
for j in range(1, M):
dp[i][j] = min(dp[i+1][j], dp[i][j-1]) + c[i][j]
print(dp[0][M-1])
левый верх правый низ
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int, input().split())))
dp = []
for q in range(N):
dp.append([0] * M)
dp[0][0] = c[0][0]
for j in range(1, M):
dp[0][j] = dp[0][j-1] + c[0][j]
for i in range(1, N):
dp[i][0] = dp[i-1][0] + c[i][0]
for i in range(1, N):
for j in range(1, M):
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + c[i][j]
print(dp[N-1][M-1])
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int, input().split())))
dp = []
for q in range(N):
dp.append([0] * M)
dp[0][0] = c[0][0]
for j in range(1, M):
dp[0][j] = dp[0][j-1] + c[0][j]
for i in range(1, N):
dp[i][0] = dp[i-1][0] + c[i][0]
for i in range(1, N):
for j in range(1, M):
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + c[i][j]
print(dp[N-1][M-1])
правый верх левый вниз
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int, input().split())))
dp = []
for q in range(N):
dp.append([0] * M)
dp[0][M-1] = c[0][M-1]
for j in range(M-2, -1, -1):
dp[0][j] = dp[0][j+1] + c[0][j]
for i in range(1, N):
dp[i][M-1] = dp[i-1][M-1] + c[i][M-1]
for i in range(1, N):
for j in range(M-2, -1, -1):
dp[i][j] = min(dp[i-1][j], dp[i][j+1]) + c[i][j]
print(dp[N-1][0])
N, M = map(int, input().split())
c = []
for z in range(N):
c.append(list(map(int, input().split())))
dp = []
for q in range(N):
dp.append([0] * M)
dp[0][M-1] = c[0][M-1]
for j in range(M-2, -1, -1):
dp[0][j] = dp[0][j+1] + c[0][j]
for i in range(1, N):
dp[i][M-1] = dp[i-1][M-1] + c[i][M-1]
for i in range(1, N):
for j in range(M-2, -1, -1):
dp[i][j] = max(dp[i-1][j], dp[i][j+1]) + c[i][j]
print(dp[N-1][0])