AT_arc222_e [ARC222E] XOR Matching

Description

$ N $ 枚のカードがあります. $ i $ 番目のカード( $ 1\leq i\leq N $ )には整数 $ A_i $ が書かれています.ここで, $ 0\leq A_i \leq 2^M-1 $ が成り立ちます. 各整数 $ X=0,1,\ldots,2^M-1 $ に対して,次の問題の答えを $ f(X) $ と書くことにします. > カードのペアをいくつか作ることを考えます. > > ただし,ペアは相異なる $ 2 $ 枚のカードからなり,それら $ 2 $ 枚のカードに書かれた整数のビット単位 XOR が $ X $ となる必要があります. 同じカードを複数のペアに含めることはできません. > > この条件のもとで作れるペアの個数の最大値を求めてください. 次の値を出力してください. \\\[ \\left(\\sum\_{X=0}^{2^M-1} f(X) \\times 10 ^ X\\right) \\bmod 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_N $

Output Format

次の値を出力してください. \\\[ \\left(\\sum\_{X=0}^{2^M-1} f(X) \\times 10 ^ X\\right) \\bmod 998244353 \\\]

Explanation/Hint

### Sample Explanation 1 - $ X=0 $ の場合: $ (A_1,A_2) $ , $ (A_3,A_4) $ という $ 2 $ 個のペアを作ることができます. - $ X=1 $ の場合: $ 0 $ 個のペアを作ることができます. - $ X=2 $ の場合: $ (A_1,A_4) $ , $ (A_2,A_3) $ という $ 2 $ 個のペアを作ることができます. - $ X=3 $ の場合: $ 0 $ 個のペアを作ることができます. したがって, $ f(0)=2 $ , $ f(1)=0 $ , $ f(2)=2 $ , $ f(3)=0 $ です.出力すべき値は $ 2\times 1 + 0\times 10 + 2\times 100 + 0\times 1000 = 202 $ です. ### Constraints - $ 2\leq N\leq 2\times 10^5 $ - $ 1\leq M\leq 20 $ - $ 0\leq A_i \leq 2^M-1 $ ( $ 1\leq i\leq N $ ) - 入力される値はすべて整数.