AT_abc356_d [ABC356D] Masked Popcount

Description

[problemUrl]: https://atcoder.jp/contests/abc356/tasks/abc356_d 整数 $ N,M $ が与えられるので、 $ \displaystyle\ \sum_{k=0}^{N} $ $ \rm{popcount} $$ (k\ \mathbin{\&}\ M) $ を $ 998244353 $ で割った余りを求めてください。 ただし、 $ \mathbin{\&} $ はビット単位 $ \rm{AND} $ 演算を表します。 ビット単位 $ \rm{AND} $ 演算とは? 非負整数 $ a $ と非負整数 $ b $ とのビット単位 $ \rm{AND} $ 演算の結果 $ x\ =\ a\ \mathbin{\&}\ b $ は次のように定義されます。 - $ x $ は全ての非負整数 $ k $ について以下の条件を満たすただ $ 1 $ つの非負整数である。 - $ a $ を $ 2 $ 進法で書き下した際の $ 2^k $ の位と $ b $ を $ 2 $ 進法で書き下した際の $ 2^k $ の位が共に $ 1 $ なら、 $ x $ を $ 2 $ 進法で書き下した際の $ 2^k $ の位は $ 1 $ である。 - そうでないとき、 $ x $ を $ 2 $ 進法で書き下した際の $ 2^k $ の位は $ 0 $ である。 例えば $ 3=11_{(2)},\ 5=101_{(2)} $ なので、 $ 3\ \mathbin{\&}\ 5\ =\ 1 $ となります。 $ \rm{popcount} $ とは? $ \rm{popcount} $$ (x) $ は、 $ x $ を $ 2 $ 進法で書き下した際に登場する $ 1 $ の個数を表します。 例えば $ 13=1101_{(2)} $ なので、 $ \rm{popcount} $$ (13)\ =\ 3 $ となります。

Input Format

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

Output Format

答えを整数として出力せよ。

Explanation/Hint

### 制約 - $ N $ は $ 0 $ 以上 $ 2^{60} $ 未満の整数 - $ M $ は $ 0 $ 以上 $ 2^{60} $ 未満の整数 ### Sample Explanation 1 \- $ \rm{popcount} $$ (0\mathbin{\&}3)\ =\ 0 $ - $ \rm{popcount} $$ (1\mathbin{\&}3)\ =\ 1 $ - $ \rm{popcount} $$ (2\mathbin{\&}3)\ =\ 1 $ - $ \rm{popcount} $$ (3\mathbin{\&}3)\ =\ 2 $ - $ \rm{popcount} $$ (4\mathbin{\&}3)\ =\ 0 $ であり、これらの和は $ 4 $ です。 ### Sample Explanation 2 $ N=0 $ である場合や $ M=0 $ である場合もあります。 ### Sample Explanation 3 $ 998244353 $ で割った余りを求めることに注意してください。