public static int uniquePaths (int m, int n) {
int[][] dp = new int[m+1][n+1];
for (int i = dp.length - 1; i >= 0; i--) {
for (int j = dp[i].length - 1; j >= 0; j--) {
if(i>=m||j>=n){
dp[i][j] = 0;
}else if(i==m-1&&j==n-1){
dp[i][j] = 1;
}else{
dp[i][j] = dp[i+1][j]+dp[i][j+1];
}
}
}
return dp[0][0];
}