C - Clamp Clamp Clamp Editorial /

Time Limit: 4 sec / Memory Limit: 2048 MB

配点 : 100

かに (N-1)「かに (N-2)「……「かに 1「かに 0a_0」」」……」」

問題文

N を正整数とする.(0, 1, \ldots, 2N) の並べ替え (a_0, a_1, \ldots, a_{2N}) であって,すべての i = 0, 1, \ldots, N-1 に対し a_{2i+1} < a_{2i+2} を満たすもの全体の集合を A とする.

a = (a_0, a_1, \ldots, a_{2N}) \in A に対し,f(a) を以下のように定める:

  • b_0 = a_0 とおく.
  • i = 0, 1, \ldots, N-1 に対し,b_{i+1} = \min\{\max\{b_i, a_{2i+1}\}, a_{2i+2}\} とおく.
  • f(a) = b_N と定める.

N および,Q 個の整数 Z_1, Z_2, \ldots, Z_Q が与えられる.各 j = 1, 2, \ldots, Q に対し,f(a) = Z_j となる a \in A の個数を 998244353 で割った余りを求めよ.

制約

  • 1 \le N \le 10^7
  • 1 \le Q \le 250\,000
  • 0 \le Z_1 < Z_2 < \cdots < Z_Q \le 2N

入力

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

N Q
Z_1 Z_2 \cdots Z_Q

出力

j = 1, 2, \ldots, Q の順に,f(a) = Z_j となる a \in A の個数を 998244353 で割った余りを,空白区切りで出力せよ.


入力例 1

2 5
0 1 2 3 4

出力例 1

0 3 24 3 0
  • a = (2, 3, 4, 0, 1), (3, 2, 4, 0, 1), (4, 2, 3, 0, 1) のとき f(a) = 1 である.
  • a = (0, 1, 2, 3, 4), (1, 0, 2, 3, 4), (2, 0, 1, 3, 4) のとき f(a) = 3 である.
  • その他の a \in A に対しては f(a) = 2 である.

入力例 2

3 7
0 1 2 3 4 5 6

出力例 2

0 30 96 378 96 30 0

入力例 3

4 9
0 1 2 3 4 5 6 7 8

出力例 3

0 630 1800 3870 10080 3870 1800 630 0

入力例 4

7 6
1 2 3 5 8 13

出力例 4

97297200 239500800 441579600 78828847 496821247 97297200