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