#P10082. [GDKOI2024 提高组] 鸡

[GDKOI2024 提高组] 鸡

题目描述

对于一个非负整数序列 aa,定义它对应的独立集序列 f(a)f(a)

  • 假设将 aia_i 改为 00,此时选出若干个两两不相邻的数使得它们的和最大,则 f(a)if(a)_i 表示和的最大值。

现在给定 n,mn, m,求有多少个长度为 bb 的非负整数序列 bb 满足以下条件:

  • 存在至少一个长度为 nn,值域为 [0,m][0, m] 的非负整数序列 aa 使得 f(a)=bf(a) = b

答案对给定的质数 MOD\textit{MOD} 取模。

输入格式

共一行,三个数,表示 n,m,MODn, m, \textit{MOD}

输出格式

共一行,一个数,表示答案。

3 1 1000000007
6
4 2 1000000007
47
20 24 1000000007
901565358
123 234 1000000009
141754844
1234 2345 1004535809
576196526

提示

本题使用子任务捆绑测试。

对于 100%100\% 的数据,1n,m3×1031 \leq n, m \leq 3 \times 10^3n2n \geq 2109<MOD<1.01×10910^9 < \textit{MOD} < 1.01 \times 10^9MOD\textit{MOD} 为质数。

  • Subtask 1(10%):n,m5n, m \leq 5
  • Subtask 2(15%):n300n \leq 300m=1m = 1
  • Subtask 3(25%):n300n \leq 300m5m ≤ 5
  • Subtask 4(20%):n,m50n, m \leq 50
  • Subtask 5(15%):n,m300n, m \leq 300
  • Subtask 6(15%):无特殊限制。