#agc043d. [agc043_d]Merge Triplets
[agc043_d]Merge Triplets
問題文
正整数 が与えられます。 の順列 であって、次の操作によって生成されうるものの数を求めてください。 ただし、答えは非常に大きくなることがあるので、素数 で割ったあまりを求めてください。
- 長さ の数列を 個用意する。この数列たちを とする。この 個の値には から がちょうど一度ずつ登場せねばならない。
- 空の数列 を用意する。以下の操作を 回繰り返す。
- 各数列 のうち、空でないものの先頭の要素を見て、そのうち最小の要素を とする。
- を から消去する。 の最後尾に を追加する。
制約
- は素数
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
出力
条件を満たす順列の数を で割ったあまりを出力せよ。
入力例 1
1 998244353
出力例 1
6
すべての長さ の順列が条件を満たします。
入力例 2
2 998244353
出力例 2
261
入力例 3
314 1000000007
出力例 3
182908545