#agc039c. [agc039_c]Division by Two with Something

[agc039_c]Division by Two with Something

問題文

整数 N,XN, X が与えられます。00 以上 XX 以下のすべての整数 kk に対し、 kk に以下の操作を繰り返すことによって次に kk に戻るまでの操作回数 (戻らない場合 00) を足し合わせた値を 998244353998244353 で割ったあまりを求めてください。

  • 現在の整数が奇数なら、11 を引いて 22 で割る。そうでなければ、22 で割って 2N12^{N-1} を足す。

制約

  • 1leqNleq2times1051 \\leq N \\leq 2\\times 10^5
  • 0leqX<2N0 \\leq X < 2^N
  • XX22 進表記でちょうど NN 桁与えられる (XXNN 桁より少ない場合、leading zero をつけて与えられる。)
  • 入力はすべて整数である

入力

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

NN XX

出力

00 以上 XX 以下のすべての整数に対し、 操作を繰り返すことによってもとの整数に戻るまでの操作回数 (戻らない場合 00) を足し合わせた値を 998244353998244353 で割ったあまりを出力せよ。


入力例 1

3
111

出力例 1

40

例えば、k=3k=3 のとき、操作によって整数は 1,0,4,6,7,31,0,4,6,7,3 と順に変化します。したがって、k=3k=3 のときの操作回数は 66 です。


入力例 2

6
110101

出力例 2

616

入力例 3

30
001110011011011101010111011100

出力例 3

549320998