C1060 [HNOI2009]有趣的数列

内存限制:256 MB 时间限制:1000 ms

题目描述

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

  1. 它是从 $1$ 到 $2n$ 共 $2n$ 个整数的一个排列 $\{a_i\}$;
  2. 所有的奇数项满足 $a_1<a_3<…<a_{2n-1}$,所有的偶数项满足$a_2<a_4<…<a_{2n}$;
  3. 任意相邻的两项 $a_{2i-1}$与 $a_{2i}$ $(1≤i≤n)$ 满足奇数项小于偶数项,即:$a_{2i-1}<a_{2i}$。

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

输入格式

输入只包含用空格隔开的两个整数 $n$ 和 $P$。

输入数据保证,$50\%$ 的数据满足 $n≤1000$,$100\%$ 的数据满足 $n≤1000000$ 且 $P≤1000000000$。

输出

仅含一个整数,表示不同的长度为 $2n$ 的有趣的数列个数 $\bmod P$ 的值。

样例

样例输入 1

3 10

样例输出 1

5

提示

对应的 $5$ 个有趣的数列分别为(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)。