atcoder#ABC258H. [ABC258Ex] Odd Steps

[ABC258Ex] Odd Steps

配点 : 600600

問題文

以下の条件を全て満たす数列 XX の総数を 998244353998244353 で割った余りを求めてください。

  • XX の全ての項は正の奇数である。
  • XX の各項の総和は SS に等しい。
  • XX の累積和には A1,,ANA_1, \dots, A_N のいずれも現れない。厳密には、各 i(1iX)i \, (1 \leq i \leq |X|) に対して Yi=X1++XiY_i = X_1 + \dots + X_i と定めたとき、1iX,1jN1 \leq i \leq |X|, 1 \leq j \leq N を満たす全ての整数 i,ji, j に対して YiAjY_i \neq A_j が成り立つ。

制約

  • 1N1051 \leq N \leq 10^5
  • $1 \leq A_1 \lt A_2 \lt \dots \lt A_N \lt S \leq 10^{18}$
  • 入力は全て整数

入力

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

NN SS

A1A_1 \ldots ANA_N

出力

答えを出力せよ。

3 7
2 4 5
3

以下の 33 通りが条件を満たします。

  • (1,5,1)(1, 5, 1)
  • (3,3,1)(3, 3, 1)
  • (7)(7)
5 60
10 20 30 40 50
37634180
10 1000000000000000000
1 2 4 8 16 32 64 128 256 512
75326268