Coding is the closest thing we have to superpower !
描述
扶苏希望重现青原上樱花盛开的景色,于是他准备了很多互不相同樱花树幼苗,准备种成一行。
这一行中,一共有 n 个位置可以种下樱花,而扶苏准备了 m 支幼苗。由于樱花盛放时对左右空间需求非常大,所以樱花不能紧挨着种植,也就是任意两支幼苗之间必须至少存在一个不种花的空位置。
按照这种方式种花并不难,但是令扶苏感到好奇的是一共有多少合法的方案让他把这 m 支幼苗都种下去。一个方案是合法的当且仅当他满足上一段中叙述的要求。如果我们将花按照 1,2,3,…,m 编号,两种方案不同当且仅当被选择种花的位置不同或从左向右数花的编号序列不同。
为了避免输出过大,答案对一个参数 p 取模。
输入
测试数据只有一行三个整数,依次代表 n,m,p。
对于 100% 的数据,保证:
1 \leq n \leq 2 \times 10^6
1 \leq m \leq 10^6,1 \leq m \leq \lceil\frac{n}{2} \rceil
1 \leq p \leq 10^9
输出
输出一行一个整数,代表答案对 p 取模的结果。
样例
输入
3 2 19260718
输出
2
提示
样例输入输出 1 解释
一共有 2 个樱花幼苗, 3 个种花的位置,如果给幼苗编号为 1,2,位置编号为 1,2,3,那么两种方案分别如下:
方案一:位置1种幼苗1,位置3种幼苗2.
方案二:位置1种幼苗2,位置3种幼苗1.
标签