Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:512 MB

#4540. 「EC Final 2018」神秘的……东道主 / Mysterious … Host

Statistics

题目描述

最终,六花的设计完美解决了城市的交通问题——兼备登峰造极的效率和无可挑剔的低成本。不过她并不关心无聊的市政府是否赏识自己的方案——因为 LCR 已经在她身后等待许久了。这位少女正如传闻那般戴着花环,穿着白裙,带着纯净的微笑。六花渐渐意识到,这就是她所憧憬的相遇。于是她伸出手,开启了二人的旅程。她们的脚步穿过大街小巷,停在西工大附中的一间教室中。

白板和白纸上的公式令六花想起了她的学业——组合数学还要补考,于是她邀请 LCR 和自己玩一个游戏来复习。

游戏中,LCR 有一个 $n$ 阶排列,六花会尝试猜测它。具体来说,六花会先选定一组排列,接着 LCR 作出一些查询。每次查询中 LCR 给出一个区间 $[L, R] (1\le L, R\le n)$,六花需要回答在她选出的每个排列中这个区间是否是连续的(“连续”的定义见下文)。最终如果六花选定的排列中有一个与 LCR 的初始排列对于 LCR 的所有问题的答案都相同,六花就会获胜。

六花想知道,为了保证获胜,她至少要选多少个不同的排列。她想对每个不超过 $N$ 的正整数 $n$ 都求出答案。由于她认不清楚太大的数,你只需要输出答案对某个质数 $P$ 取模的结果即可。

区间 $[L,R]$ 在 $n$ 阶排列 $p$ 中连续当且仅当不存在三个整数 $x, y, z$ 使得 $1\le x,y,z\le n, p_x < p_y < p_z , x, z\in [L,R], y \notin [L,R]$,其中 $p_i$ 是一个 $[1,n]$ 中的整数,表示排列的第 $i$ 项。

输入格式

输入一行两个正整数 $N, P$,分别表示最大询问的排列阶数和模数。保证 $P$ 是质数。

输出格式

输出 $N$ 行每行一个自然数,第 $n$ 行的数表示排列为 $n$ 阶时为了保证获胜需选择的最小排列个数,对 $P$ 取模。

样例

input

10 65537

output

1
1
3
12
52
240
1160
5795
29681
23951

数据范围与提示

$1\le N\le 5000, 1\le P < 2^{30}, (\exists k\in \mathbb{N})(P = k\cdot 2^{14}+1)$

提示

当 $n=3$ 时,可能的排列和询问各有 $6$ 种,如下:

$(1,2,3)$ $(1,3,2)$ $(2,1,3)$ $(2,3,1)$ $(3,1,2)$ $(3,2,1)$
$[1,1]$ True True True True True True
$[2,2]$ True True True True True True
$[3,3]$ True True True True True True
$[1,2]$ True False True True False True
$[2,3]$ True True False False True True
$[1,3]$ True True True True True True

答案应该是 $3$,例如六花可以选择 $(1,2,3),(1,3,2),(2,1,3)$,这样无论 LCR 如何提问,她总有一个排列与 LCR 选择的排列回答相同。