atcoder#ABC260H. [ABC260Ex] Colorfulness

[ABC260Ex] Colorfulness

配点 : 600600

問題文

11 から NN までの番号がついた NN 個のボールがあります。ボール ii には色 aia_i がついています。

(1,2,,N)(1, 2, \dots, N) を並べ替えた列 P=(P1,P2,,PN)P = (P_1, P_2, \dots, P_N) に対して C(P)C(P) を次のように定めます。

  • ボールを P1,P2,,PNP_1, P_2, \dots, P_N という順番に一列に並べたときの、異なる色のボールが隣り合っている場所の数。

(1,2,,N)(1, 2, \dots, N) を並べ替えた列全体の集合を SNS_N と置きます。また、F(k)F(k) を次のように置きます。

$$\displaystyle F(k) = \left(\sum_{P \in S_N}C(P)^k \right) \bmod 998244353 $$

F(1),F(2),,F(M)F(1), F(2), \dots, F(M) を列挙してください。

制約

  • 2N2.5×1052 \leq N \leq 2.5 \times 10^5
  • 1M2.5×1051 \leq M \leq 2.5 \times 10^5
  • 1aiN1 \leq a_i \leq N
  • 入力される値はすべて整数

入力

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

NN MM

a1a_1 a2a_2 \dots aNa_N

出力

答えを以下の形式で出力せよ。

F(1)F(1) F(2)F(2) \dots F(M)F(M)

3 4
1 1 2
8 12 20 36

(P,C(P))(P, C(P)) の組としてあり得るものを列挙すると次のようになります。

  • P=(1,2,3)P=(1,2,3) のとき C(P)=1C(P) = 1
  • P=(1,3,2)P=(1,3,2) のとき C(P)=2C(P) = 2
  • P=(2,1,3)P=(2,1,3) のとき C(P)=1C(P) = 1
  • P=(2,3,1)P=(2,3,1) のとき C(P)=2C(P) = 2
  • P=(3,1,2)P=(3,1,2) のとき C(P)=1C(P) = 1
  • P=(3,2,1)P=(3,2,1) のとき C(P)=1C(P) = 1

これらの値を F(k)F(k) に代入すれば答えを計算することができます。例えば F(1)=11+21+11+21+11+11=8F(1) = 1^1 + 2^1 + 1^1 + 2^1 + 1^1 + 1^1 = 8 です。

2 1
1 1
0
10 5
3 1 4 1 5 9 2 6 5 3
30481920 257886720 199419134 838462446 196874334