题目背景
在星港远征计划中,科研组正在研究一种分层增长谱。原始记录是一段长度为 N+1 的能级序列 A,其中每个值都在 0 到 M 之间。
系统只会保留相邻两项的和,从而生成一个长度为 N 的观测序列 S。为了符合实验要求,这个观测序列必须是非递减的。
现在你需要计算,究竟有多少种不同的观测序列 S 可以由某个合法的原始序列 A 产生。
题目描述
对于一个长度为 N+1 的序列
A=(A1,A2,…,AN+1),
我们按如下方式得到一个长度为 N 的序列
S=(S1,S2,…,SN):
- 对每个 i (1≤i≤N),定义Si=Ai+Ai+1.
请你求出满足以下全部条件的长度为 N 的序列 S 的个数,并对 109+7 取模:
- S 是非递减序列;
- 存在一个长度为 N+1 的序列 A,其中每个元素都是 0 到 M 之间的整数(含端点),并且可以按上述方式得到该 S。
输入格式
输入从标准输入给出,格式如下:
N M
输出格式
输出一行一个整数,表示答案。
样例 #1
输入
2 1
输出
5
说明
可能的 A 序列共有以下 8 种:
- A=(0,0,0),得到 S=(0,0)
- A=(0,0,1),得到 S=(0,1)
- A=(0,1,0),得到 S=(1,1)
- A=(0,1,1),得到 S=(1,2)
- A=(1,0,0),得到 S=(1,0)
- A=(1,0,1),得到 S=(1,1)
- A=(1,1,0),得到 S=(2,1)
- A=(1,1,1),得到 S=(2,2)
其中非递减的不同 S 共有 5 种:
- (0,0)
- (0,1)
- (1,1)
- (1,2)
- (2,2)
样例 #2
输入
869121 10000000
输出
767557322
数据范围
- 1≤N,M≤107
- 输入中的所有值均为整数