有一个 $H \times W$ 的网格。令 $(i, j)$ 为第 $i$ 行($0 \le i \le H - 1$)和第 $j$ 列($0 \le j \le W - 1$)的交点处的单元格。最初,一条鳗鱼位于单元格 $(0, 0)$。鳗鱼重复以下过程:
- 如果当前单元格已被涂色,则结束过程。
- 如果当前单元格未被涂色,则将该单元格涂色并移动到另一个单元格。如果当前单元格为 $(i, j)$,则新单元格必须是 $((i + 1) \pmod H, j)$ 或 $(i, (j + 1) \pmod W)$。
计算涂满所有单元格并在单元格 $(0, 0)$ 结束过程的方法数,结果对 $10^9 + 7$ 取模。如果鳗鱼经过的路径不同,则视为两种不同的方法。
输入格式
$H \ W$
数据范围
- $2 \le H, W \le 10^6$
输出格式
输出答案对 $10^9 + 7$ 取模的结果。
样例
输入格式 1
2 2
输出格式 1
2
输入格式 2
6 3
输出格式 2
3
输入格式 3
3 4
输出格式 3
0
输入格式 4
10 10
输出格式 4
260
输入格式 5
200 300
输出格式 5
551887980
说明
下图展示了样例 1 中的两种方法: