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 $ - 入力はすべて整数である.