import sys

lines = []
for line in sys.stdin:
    a = line.split()
    lines.append(a)

m = int(lines[0][1])
n = int(lines[0][0])
DP = [[0 for _ in range(n)] for _ in range(m)]
DP[m-1][n-1] = max(-int(lines[m][n-1]) + 1, 1)  # 血量不能少于1
for i in range(1, m+n-1):
    for j in range(i+1):
        if j <= m-1 and (i-j) <= n-1:
            row = (m-1) - j
            column = (n-1) - (i-j)
            if row == m - 1:
                DP[row][column] = max(DP[row][column+1] - int(lines[row+1][column]), 1)  # 血量不能少于1
            elif column == n - 1:
                DP[row][column] = max(DP[row+1][column] - int(lines[row+1][column]), 1)  # 血量不能少于1
            else:
                down = max(DP[row+1][column] - int(lines[row+1][column]), 1)  # 血量不能少于1
                right = max(DP[row][column+1] - int(lines[row+1][column]), 1)  # 血量不能少于1
                DP[row][column] = min(down, right)  # 初始血量至少是多少,所以用min

print(DP[0][0])