#XMOJ11566. 随性旅行

随性旅行

说明

时间限制:1 Sec 内存限制:256 MB 输入文件random.in 输出文件random.out

世界上一共有 $N$ 个国家,依次编号为 $1$ 号国、$2$ 号国、……、$N$ 号国。

住在 $1$ 号国的小明计划用 $M$ 天环游世界。单纯旅行太过无聊,于是小明决定用抛硬币来决定每天的行动。

旅行一共持续第 $1$ 天到第 $M$ 天,第 $1$ 天清晨小明初始在 $1$ 号国。

设第 $i$ 天清晨小明处在 $x$ 号国,当天行动规则如下:

1. 抛一枚硬币,观察正面还是反面。

2. 若抛出正面:

   - 如果 $x>1$,就移动到 $x-1$ 号国;

   - 如果 $x=1$,则原地不动。

   若抛出反面:

   - 如果 $x<N$,就移动到 $x+1$ 号国;

   - 如果 $x=N$,则原地不动。

3. 执行完上述移动后,设当前所在国家为 $y$。小明会在旅行日记的第 $i$ 页写下数字 $y$。

$M$ 天结束后,记日记上第 $i$ 页的数字为 $a_i$。

请求出满足以下条件的序列 $a_1,a_2,\dots,a_M$ 的总个数:

- 是所有可能出现的合法序列;

- 满足最后一项 $a_M=1$。

答案可能很大,请对 $10^9+7$ 取模后输出。

输入格式

一行两个整数:$N$ 和 $M$。

输出格式

输出满足条件的序列总数对 $10^9+7$ 取模的余数。

样例

样例 1

2 3

4

样例说明:

假设硬币正反面三天依次为 反面、反面、正面:第 11 天从 121→2,第 22 天留在 22,第 33 天从 212→1,得到序列:2,2,12,2,1

同理:

- 反面、正面、正面 → 序列 $2,1,1$

- 正面、正面、正面 → 序列 $1,1,1$

- 正面、反面、正面 → 序列 $1,2,1$

一共恰好 $4$ 种合法序列,故答案为 $4$。

样例 2

1 2

1

样例说明:

只能停在 11 号国,序列只能是 1,11,1,仅 11 种。

样例 3

16 21

352716

样例 4

1000000 1000000

996692777

数据范围

对于 10% 的数据,$N=1$。

另有 5% 的数据,$M=1$。

另有 30% 的数据,$N,M \le 10$。

对于 100% 的数据,$1\le N\le 10^6,\quad 1\le M\le 10^6$。