交错垛放方案

普及-⏱ 1000ms💾 256MB#P3274🏷️ 卡塔兰数数论组合数学

题目描述

仓库收到 $2n$ 箱货物(尺寸互不相同,按尺寸从小到大编号 $1 \sim 2n$),要把它们垛成 $n$ 层, 每层恰好 $2$ 箱左右并排。垛放规则:

  • 每层内左箱尺寸小于右箱尺寸;
  • 自上而下各层的左箱尺寸依次递增,右箱尺寸也依次递增。 求满足规则的垛放方案数对给定模数 $P$ 取模的结果($P$ 不一定是质数)。

输入格式

一行两个整数 $n$ 和 $P$($1 \le n \le 5 \times 10^6$,$1 \le P \le 10^9$)。

输出格式

一行一个整数:方案数对 $P$ 取模的结果。

数据范围

None

样例输入 #1
3 10
样例输出 #1
5
样例输入 #2
1 1000000000
样例输出 #2
1