------
## 最终结论
```python
def uniquePaths(m, n):
    # 初始化一个 m x n 的二维数组
    dp = [[0] * n for _ in range(m)]
    
    # 设置边界条件
    for i in range(m):
        dp[i][0] = 1  # 第一列的路径数为1
    for j in range(n):
        dp[0][j] = 1  # 第一行的路径数为1
    
    # 动态规划填充数组
    for i in range(1, m):
        for j in range(1, n):
            dp[i][j] = dp[i-1][j] + dp[i][j-1]  # 当前格子的路径数为上方和左方的路径数之和
    
    # 返回结果
    return dp[m-1][n-1]  # 返回到达终点的路径数

# 示例用法
print(uniquePaths(3, 2))  # 输出: 3
print(uniquePaths(7, 3))  # 输出: 28
```