import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param grid int整型二维数组 
     * @return int整型
     */
    public int maxValue (int[][] grid) {
        // write code here
        int m = grid.length;
        int n = grid[0].length;

        // dp[i][j] 表示到[i,j]地方最大的价值数,多加一行一列帮助初始化
        int[][] dp = new int[m+1][n+1];
        // 初始化数组
        dp[0][1] = 0;
        for(int i=1;i<dp.length;i++) {
            for(int j =1;j<dp[0].length;j++) {
                dp[i][j] += Math.max(grid[i-1][j-1]+dp[i-1][j],grid[i-1][j-1]+dp[i][j-1]);
            
            }
        }
        return dp[m][n];
    }   
}