AT_KeioPC2025_m Popcount MST
Description
長さ $ N $ の整数列 $ A = (A_0, \dots , A_{N-1}) $ に対し、 $ f(A) $ を以下のように定義します。ここで $ a \ \mathrm{AND} \ b $ は $ a $ と $ b $ のビットごとの論理積を表します。
- 頂点に $ 0 $ から $ 2^N-1 $ の番号がついた $ 2^N $ 頂点の重み付き完全グラフ $ G $ を考える。ただし、頂点 $ i $ と頂点 $ j $ を結ぶ辺の重みは $ \displaystyle A_{\mathrm{popcount}(i \ \mathrm{AND} \ j)} $ である。このときのグラフ $ G $ の最小全域木にふくまれる辺の重みの総和を $ f(A) $ と定める。
長さ $ N $ の整数列 $ B = (B_0, \dots , B_{N-1}) $ が与えられます。 $ B $ の各要素は $ -1 $ または $ 1 $ 以上 $ M $ 以下です。
$ B $ の要素のうち、 $ -1 $ をすべて $ 1 $ 以上 $ M $ 以下の整数に置き換えて得られる数列 $ B' $ は、 $ B $ に含まれる $ -1 $ の個数を $ q $ とすると $ M^q $ 通りあります。
考えられる $ B' $ すべてに対する $ f(B') $ の総和を $ 998244353 $ で割ったあまりを求めてください。
$ \mathrm{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
入力は以下の形式で標準入力から与えられる。
> $ N \ M $ $ B_0 \ \dots \ B_{N-1} $
Output Format
答えを出力せよ。
Explanation/Hint
### 部分点
この問題には部分点が設定されている。
- $ 1 \le B_i \le M $ を満たすデータセットに正解した場合 $ 1 $ 点が与えられる。
### Sample Explanation 1
考えられる $ B' $ は以下の $ 2 $ 通りです。
- $ B' = (1, 2) $ のとき、辺 $ (0, 1), (0, 2), (0, 3) $ からなる全域木が最小全域木の一例で、辺の重みの総和は $ 3 $ となります。
- $ B' = (2, 2) $ のとき、辺 $ (0, 1), (1, 2), (2, 3) $ からなる全域木が最小全域木の一例で、辺の重みの総和は $ 6 $ となります。
よって、すべての $ B' $ に対する $ f(B') $ の総和は $ 9 $ となります。
### Constraints
- $ 1 \le N, M \le 125000 $
- $ B_i $ は $ -1 $ または $ 1 $ 以上 $ M $ 以下の整数