atcoder#ARC112E. [ARC112E] Cigar Box

[ARC112E] Cigar Box

配点 : 700700

問題文

数列 (1,2,,n)(1,2,\dots,n) に対して、以下の操作をちょうど mm 回繰り返したところ、(a1,,an)(a_1,\dots ,a_n) になりました。

  • 項を 11 つ選んで消す。その後、消した項を数列の先頭か末尾に付け加える。

mm 回の操作列としてありうるものの数を 998244353998244353 で割ったあまりを求めてください。

ただし、22 つの操作列が同じであるとは、「どの操作についても、選んだ項と付け加えた位置がどちらも等しいこと」とします。

制約

  • 2n30002\le n \le 3000
  • 1m30001\le m \le 3000
  • a1,,ana_1,\dots ,a_n1,,n1,\dots,n の順列

入力

入力は以下の形式で標準入力から与えられる。

nn mm

a1a_1 \dots ana_n

出力

操作列としてありうるものの数を 998244353998244353 で割ったあまりを出力せよ。

5 2
1 2 4 5 3
5

以下の 55 通りの操作列がありえます。

  • 11 を消して先頭に付け加える。数列は (1,2,3,4,5)(1,2,3,4,5) となる。その後、33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。
  • 33 を消して先頭に付け加える。数列は (3,1,2,4,5)(3,1,2,4,5) となる。その後、33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。
  • 33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。その後、11 を消して先頭に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。
  • 33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。その後、33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。
  • 55 を消して末尾に付け加える。数列は (1,2,3,4,5)(1,2,3,4,5) となる。その後、33 を消して末尾に付け加える。数列は (1,2,4,5,3)(1,2,4,5,3) となる。
2 16
1 2
150994942

44 種類の操作のうち、22 種類では数列が全く変わらず、もう 22 種類では 22 項が入れ替わります。 このことから、全ての操作列のうち半分である 4m/2=231=21474836484^m/2 = 2^{31} = 2147483648 が求める操作列の数であることが示せます。 よって、21474836482147483648998244353998244353 で割ったあまりである 150994942150994942 が答えです。

10 3000
3 7 10 1 9 5 4 8 6 2
129989699