bzoj#P1485. [HNOI2009]有趣的数列

[HNOI2009]有趣的数列

题目描述

我们称一个长度为 2×n2 \times n 的数列是有趣的,当且仅当该数列满足以下三个条件:

  1. 它是从 112×n2 \times n2×n2 \times n 个整数的一个排列 {ai}\{a_i\}
  2. 所有的奇数项满足 a1<a3<<a2n1a_1<a_3< \dots <a_{2n-1},所有的偶数项满足 a2<a4<<a2×na_2<a_4< \dots <a_{2 \times n}
  3. 任意相邻的两项 a2×i1a_{2 \times i-1}a2×i (1in)a_{2 \times i}~(1 \leq i \leq n) 满足奇数项小于偶数项,即:a2×i1<a2×ia_{2 \times i-1}<a_{2 \times i}

现在的任务是:对于给定的 nn,请求出有多少个不同的长度为 2×n2 \times n 的有趣的数列。因为最后的答案可能很大,所以只要求输出答案 modP\bmod P的值。

输入格式

输入文件只包含用空格隔开的两个整数 nnPP。输入数据保证

输出格式 仅含一个整数,表示不同的长度为 2n 的有趣的数列个数 mod P 的值。

3 10
5

样例解释

对应的 55 个有趣的数列分别为 $(1,2,3,4,5,6),(1,2,3,5,4,6),(1,3,2,4,5,6),(1,3,2,5,4,6),(1,4,2,5,3,6)$。

数据范围

50%50\% 的数据满足 n1000n \leq 1000

100%100\% 的数据满足 n106n \leq 10^6P109P \leq 10^9