#agc035e. [agc035_e]Develop

[agc035_e]Develop

问题描述

有一个黑板,上面写着从 1018-10^{18}101810^{18} 的所有整数,每个整数都只出现一次。Takahashi 可以任意次数(可能为零)地重复以下操作序列:

  • 选择黑板上写着的一个整数 xx,将其擦除。
  • 如果黑板上没有写着 x2x-2,则写上 x2x-2
  • 如果黑板上没有写着 x+Kx+K,则写上 x+Kx+K

找到在执行任意次操作后,黑板上可能出现的整数集合的数量,对 MM 取模。当存在一个整数仅出现在其中一个集合中时,我们认为两个集合是不同的。

约束条件

  • 1KN1501 \leq K \leq N \leq 150
  • 108M10910^8 \leq M \leq 10^9
  • NNKKMM 都是整数。

输入

输入以以下格式从标准输入给出:

NN KK MM

输出

打印在执行任意次操作后,黑板上可能出现的整数集合的数量,对 MM 取模。


示例输入 1

3 1 998244353

示例输出 1

7

满足条件的集合包括:包含所有小于 11 的整数、所有大于 33 的整数,以及选择 112233 中的至少一个整数。共有 77 个这样的集合。


示例输入 2

6 3 998244353

示例输出 2

61

示例输入 3

9 4 702443618

示例输出 3

312

示例输入 4

17 7 208992811

示例输出 4

128832

示例输入 5

123 45 678901234

示例输出 5

256109226