AT_arc232_e [ARC232E] Doubling
Description
長さ $ N+1 $ の非負整数列 $ X=(X_1,X_2,\ldots,X_{N+1}) $ が与えられます.ただし, $ X_{N+1}=0 $ です.
あなたは,以下の操作を行うことができます.
- $ 1 \leq i \leq N $ かつ $ X_i \geq 1 $ を満たす整数 $ i $ を選び, $ X_i $ から $ 1 $ を引き, $ X_{i+1} $ に $ 2 $ を足す.
整数 $ K $ が与えられます.各 $ k=1,2,\ldots,K $ について,与えられた数列に操作をちょうど $ k $ 回行った結果としてありうる数列の個数を $ 998244353 $ で割った余りを求めてください.
Input Format
入力は以下の形式で標準入力から与えられる. $ X_{N+1} $ は入力に含まれない.
> $ N $ $ K $ $ X_1 $ $ X_2 $ $ \ldots $ $ X_N $
Output Format
$ k=1,2,\cdots,K $ に対する答えをこの順に,空白区切りで $ 1 $ 行に出力せよ.
Explanation/Hint
### Sample Explanation 1
操作を $ 1 $ 回行った結果としてありうる数列は $ (0,3,0) $ と $ (1,0,2) $ の $ 2 $ 個です. 操作を $ 2 $ 回行った結果としてありうる数列は $ (0,2,2) $ の $ 1 $ 個です.この数列を得る操作の順序は複数ありますが,数列の個数としては $ 1 $ 個と数えます.
### Sample Explanation 2
初めの数列は $ (1,0,0) $ です.操作を行うごとに,数列は $ (0,2,0) $ , $ (0,1,2) $ , $ (0,0,4) $ と変化します.操作を $ 4 $ 回行うことはできません.
### Constraints
- $ 1 \leq N \leq 20 $
- $ 1 \leq K \leq 250000 $
- $ 0 \leq X_i \leq 250000 $ $ (1 \leq i \leq N) $
- $ X_{N+1}=0 $
- 入力はすべて整数である.