def calculate_minimum_hp(map): m, n = len(map), len(map[0]) # 初始化动态规划表 dp = [[0] * n for _ in range(m)] # 初始化终点 dp[m - 1][n - 1] = max(1, 1 - map[m - 1][n - 1]) # 初始化最后一列 for i in range(m - 2, -1, -1): dp[i][n - 1] = max(1, dp[i + 1][n - 1] - map[i][n - 1]) # 初始化最后一行 for j in range(n - 2, -1, -1): dp[m - 1][j] = max(1, dp[m - 1][j + 1] - map[m - 1][j]) # 填充动态规划表 for i in range(m - 2, -1, -1): for j in range(n - 2, -1, -1): # 选择向右或向下移动所需的最小初始血量 min_required = min(dp[i + 1][j], dp[i][j + 1]) dp[i][j] = max(1, min_required - map[i][j]) # 返回结果 return dp[0][0] # 输入处理 n, m = map(int, input().split()) matrix = [] for _ in range(n): row = list(map(int,input().split())) matrix.append(row) # 计算最小初始血量 result = calculate_minimum_hp(matrix) print(result)