問題文

11 ~ NN の番号が付いたお菓子が入ったお菓子セットがある。お菓子にはそれぞれに体積が設定されている。お菓子 ii の体積は viv_i である。

食べたお菓子の体積の合計がちょうど VV になるようにお菓子をいくつか選んで食べる。

お菓子セットが kk 個あるときに食べたお菓子の体積の合計がちょうど VV になるように食べる方法の数を f(k)f(k) として、f(1)+f(2)++f(K)f(1)+f(2)+…+f(K)998244353998244353 で割ったあまりを出力するようなプログラムを作成せよ。


ただし、セットが違えばたとえ同じ種類のお菓子であっても区別される。

制約

1N,V20001\leq N, V \leq 2000

1K1061\leq K \leq 10^6

1viV1\leq v_i \leq V (1iN)(1\leq i \leq N)

入力

入力はすべて整数である。

N V K
v_1 v_2 ... v_N

出力

計算結果を一行に出力せよ。

サンプル

入力1
3 10 2
1 2 3
出力1
3

お菓子セット 11 個のときは食べたお菓子の体積の合計がちょうど 1010 になるように食べることはできないので、 f(1)=0f(1)=0 です。

お菓子セット 22 個のときは、体積 11 のお菓子を 22 個、体積 22 のお菓子を 11 個、体積 33 のお菓子を 22 個食べる方法が 22 通り存在します。 さらに、体積 11 でないお菓子を全て食べる方法が 11 通りなので、 f(2)=3f(2)=3 です。

f(1)+f(2)=0+3=3f(1)+f(2)=0+3=3 より、答えは 33 です。

入力2
2 2 2
1 1
出力2
7

f(1)=1,f(2)=6f(1)=1, f(2)=6 となります。

お菓子セットの個数が 22 個のときに、お菓子セットを 11 個しか使わないことも許容されることに注意して下さい。

入力3
5 500 2022
1 1 149 334 2
出力3
613503506

提出


Go (1.21)