AT_arc227_e [ARC227E] Shift and XOR Switches

Description

$ 0 $ と $ 1 $ からなる長さ $ N $ の数列 $ B=(B_1,B_2,\ldots,B_N) $ があります。 はじめ、 $ B_1=1 $ であり、それ以外の要素は $ 0 $ です。 $ M $ 個のスイッチがあり、スイッチ $ i $ ( $ 1 \le i \le M $ ) には整数 $ A_i $ が書かれています。 スイッチ $ i $ を押すと、操作を行う直前の状態を用いて、 $ 1 \le j \le N $ を満たすすべての整数 $ j $ について $ B_j $ を同時に次のように変更します。 \\\[ B\_j \\leftarrow \\begin{cases} B\_j \\oplus B\_{j-A\_i} & (A\_i \\lt j),\\\\ B\_j & (j \\le A\_i) \\end{cases} \\\] 各スイッチは $ 0 $ 回または $ 1 $ 回押すことができ、スイッチを押す順番は自由です。 最終的な列 $ B $ としてあり得るものの個数を $ 998244353 $ で割った余りを求めてください。 ビット単位 $ \mathrm{XOR} $ 演算とは非負整数 $ A, B $ のビット単位 $ \mathrm{XOR} $ 、 $ A \oplus B $ は、 以下のように定義されます。 - $ A \oplus B $ を二進表記した際の $ 2^k $ ( $ k \geq 0 $ ) の位の数は、 $ A, B $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $ 、 そうでなければ $ 0 $ である。 例えば、 $ 3 \oplus 5 = 6 $ となります (二進表記すると: $ 011 \oplus 101 = 110 $ )。 一般に $ k $ 個の非負整数 $ p_1, p_2, p_3, \dots, p_k $ のビット単位 $ \mathrm{XOR} $ は $ (\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k) $ と定義され、 これは $ p_1, p_2, p_3, \dots, p_k $ の順番によらないことが証明できます。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_M $

Output Format

最終的な列 $ B $ としてあり得るものの個数を $ 998244353 $ で割った余りを出力せよ。

Explanation/Hint

### Sample Explanation 1 最終的な列としてあり得るものは、次の $ 4 $ 個です。 - $ (1,0,0,0) $ - $ (1,0,1,0) $ - $ (1,0,0,1) $ - $ (1,0,1,1) $ ### Sample Explanation 2 最終的な列としてあり得るものは、 $ (1,0) $ と $ (1,1) $ の $ 2 $ 個です。 ### Constraints - $ 2 \le N \le 2 \times 10^5 $ - $ 1 \le M \le 2 \times 10^5 $ - $ 1 \le A_i \lt N $ ( $ 1 \le i \le M $ ) - 入力される数値はすべて整数