#ATagc043d. [AGC043D] Merge Triplets
[AGC043D] Merge Triplets
题目描述
给你一个正整数 ,计算可以按以下方法生成的 到 的排列 的个数。
答案可以很大,所以你需要输出它对一个质数 取模的值。
- 构造 个长度为 的序列 ,其中 到 每个数字均恰好出现一次。
- 初始为空,重复以下操作 次:
- 对于所有的非空序列 ,令 为它们的第一个元素中最小的一个。
- 在 所在的 中删除 ,然后把 加入 的末尾。
输入格式
一行两个整数 (, 为质数)。
输出格式
输出一行一个整数,表示答案对 取模后的值。
样例 1
输入
1 998244353
输出
6
样例 2
输入
2 998244353
输出
261
样例 3
输入
314 1000000007
输出
182908545
说明/提示
样例 1 解释
所有长度为 的排列均满足条件。