#S2C. 跳

题目背景

跳一跳世界第一。

不处,不收徒,差距自己找。

题目描述

给定一个坐标轴,范围是 1n1\sim n。每个点 ii 可以跳到 i+1i+1i+1ni+1\le n)或 i1i-1i11i-1\ge 1)或他的因子数处。每个点只能到达一次。问从点 nn 到点 11 一共有多少方案。答案对 pp 取模。

两种方案不同当且仅当存在一次跳跃后的位置不同或存在一次跳跃的种类不同。

输入格式

一行两个整数 n,pn,p

输出格式

一行一个整数,表示答案对 pp 取模后的结果。

样例

3 1000000007
3

样例 1 解释

\rightarrow 表示向上或向下跳,\Rightarrow 表示跳因子。共三种方案如下。

  • 313\Rightarrow1
  • 3213\rightarrow2\rightarrow1
  • 3213\rightarrow2\Rightarrow1
4 1000
7

样例 2 解释

\rightarrow 表示向上或向下跳,\Rightarrow 表示跳因子。共七种方案如下。

  • 4314\rightarrow3\Rightarrow1
  • 43214\rightarrow3\rightarrow2\rightarrow1
  • 43214\rightarrow3\rightarrow2\Rightarrow1
  • 42314\Rightarrow2\rightarrow3\Rightarrow1
  • 4214\Rightarrow2\rightarrow1
  • 4214\Rightarrow2\Rightarrow1
  • 414\Rightarrow1
100 511609
272799

数据范围

本题采用捆绑测试。

  • Subtask 1(8 pts):n20n\le20
  • Subtask 2(11 pts):n150n\le150
  • Subtask 3(23 pts):n300n\le300
  • Subtask 4(26 pts):n1000n\le1000
  • Subtask 5(32 pts):无特殊限制。

对于所有测试数据,1n5×1031\le n\le5\times10^32p109+72\le p\le 10^9+7