AT_arc200_e [ARC200E] popcount <= 2
Description
正整数 $ N,M $ が与えられます。
長さ $ N $ の非負整数列 $ A=(A_1,A_2,\ldots,A_N) $ であって、以下の条件を全て満たすものの個数を $ 998244353 $ で割ったあまりを求めてください。
- $ 0\le A_i < 2^M $ $ (1\le i\le N) $
- $ \operatorname{popcount}(A_i\oplus A_j) \le 2 $ $ (1\le i < j\le N) $
ただし、非負整数 $ x,y $ に対し $ x\oplus y $ を $ x $ と $ y $ のビット単位 $ \mathrm{XOR} $ 演算、 $ \operatorname{popcount}(x) $ を $ x $ の popcount とします。
$ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。
ビット単位 $ \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 $ )。 popcount とは非負整数 $ x $ について $ \operatorname{popcount}(x) $ とは、 $ x $ を $ 2 $ 進法で表記したときの $ 1 $ の個数です。 より厳密には、非負整数 $ x $ について $ \displaystyle x=\sum _ {i=0} ^ \infty b _ i2 ^ i\ (b _ i\in\lbrace0,1\rbrace) $ が成り立っているとき $ \displaystyle\operatorname{popcount}(x)=\sum _ {i=0} ^ \infty b _ i $ です。
例えば、 $ 13 $ を $ 2 $ 進法で表記すると `1101` なので、 $ \operatorname{popcount}(13)=3 $ となります。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ T $ $ \text{case}_1 $ $ \text{case}_2 $ $ \vdots $ $ \text{case}_T $
各テストケースは以下の形式で与えられる。
> $ N $ $ M $
Output Format
$ T $ 行出力せよ。 $ i $ 行目には $ i $ 番目のテストケースの答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
$ 1 $ つ目のテストケースについて考えます。
例えば $ A=(4,5) $ は各要素が $ 0 $ 以上 $ 2^3=8 $ 未満で $ \operatorname{popcount}(4\oplus 5)=\operatorname{popcount}(1)=1\le 2 $ なので条件を満たします。一方、 $ A=(2,5) $ や $ A=(0,7) $ は条件を満たしません。
条件を満たす $ A $ は $ 56 $ 通り存在するので、 $ 1 $ 行目には $ 56 $ を出力してください。
### Constraints
- $ 1\le T\le 2\times 10^5 $
- $ 2\le N,M < 998244353 $
- 入力される値は全て整数