#ATagc067d. [AGC067D] Unique Matching

[AGC067D] Unique Matching

题目描述

定义 nn 个区间是好的,当且仅当:

  • 1liriN1 \leq l_i \leq r_i \leq N
  • 存在唯一的 NN 阶排列 x1,x2,,xNx_1,x_2,\cdots,x_N,使得 xi[li,ri]x_i \in \left[ l_i , r_i\right]

给定整数 NN、素数 PP

求有多少组 $\left[l\_1,r\_1\right],\left[l\_2,r\_2\right],\cdots,\left[l\_N,r\_N\right]$ 是好的

答案对 PP 取模。

输入格式

一行用空格隔开的两个整数 N,PN,P

输出格式

一行一个整数,答案。

样例 1

输入

2 1005488041

输出

6

样例 2

输入

5 1005488041

输出

102960

样例 3

输入

100 1005488041

输出

47599495

样例 4

输入

1000 1005488041

输出

632708165

说明/提示

  • 2N50002 \leq N \leq 5000
  • 109<P<1.01×10910^9 < P <1.01 \times 10^9
  • PP 为素数
  • 所有输入值均为整数

样例解释 #1

以下为 66好的排列:

  • ([1,1],[2,2])([1,1],[2,2])
  • ([1,2],[2,2])([1,2],[2,2])
  • ([1,1],[1,2])([1,1],[1,2])
  • ([2,2],[1,1])([2,2],[1,1])
  • ([2,2],[1,2])([2,2],[1,2])
  • ([1,2],[1,1])([1,2],[1,1])