#P16719. 典
典
题目描述
小可可在玩双栈排序。
小可可现在有两个栈 和两个序列 。初始时, 是一个长度为 的排列, 均为空。
小可可可以进行任意次操作,每次选择下面三种操作之一:
- 若 非空,则可以将 的开头元素移动到 的栈顶。操作后需要保证 中的元素从栈底到栈顶严格递减。
- 将 的栈顶元素移动到 的栈顶。
- 将 的栈顶元素移动到 的开头。
小可可希望在操作结束后, 是 排序后的结果。也就是说, 中有 个元素,且第 个元素为 。
对于每个 ,小可可想知道有多少个长度为 的排列 能满足上述条件。
由于答案很大,请输出答案对质数 取模的结果。
输入格式
一行两个整数 ,分别表示 的上限和模数。
输出格式
输出 行,每行一个整数。
第 行表示 时的答案对 取模的结果。
样例输入1
10 531284701
样例输出1
1
2
6
22
90
394
1806
8558
41586
206098
数据范围与约定
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据:
且 为质数。