class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int n = grid.size(),m = grid[0].size();
int dp[205][205];
int arr[205][205];
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
arr[i][j] = grid[i-1][j-1];
}
}
memset(dp,1e9+7,sizeof(dp));
// memset(arr,1e9+7,sizeof(arr));
dp[1][1] = grid[0][0];
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
if(i == 1 && j == 1) continue;
dp[i][j] = min(dp[i-1][j]+arr[i][j],dp[i][j-1]+arr[i][j]);
}
}
return dp[n][m];
}
};