class Solution:
def maxValue(self, grid: List[List[int]]) -> int:
n = len(grid)
if not n:
return 0
m = len(grid[0])
dp = [0]
for v in grid[0]:
dp.append(v + dp[-1])
for i in range(1, n):
for j in range(m):
dp[j + 1] = max(dp[j], dp[j + 1]) + grid[i][j]
return dp[-1]