#arc135a. [arc135_a]Floor, Ceil - Decomposition

[arc135_a]Floor, Ceil - Decomposition

問題文

黒板にひとつの整数 XX が書かれています。あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。

  • 黒板に書かれている整数 xx をひとつ選ぶ。
  • xx をひとつ黒板から消去し、新たに lfloorfracx2rfloor\\lfloor \\frac{x}{2}\\rfloorlceilfracx2rceil\\lceil \\frac{x}{2}\\rceil をひとつずつ黒板に書く。

操作後の黒板に書かれている整数すべての積としてありうる最大値を、998244353998244353 で割った余りを答えてください。

lfloorfracx2rfloor\\lfloor \\frac{x}{2}\\rfloorlceilfracx2rceil\\lceil \\frac{x}{2}\\rceil とは?

実数 xx に対して,xx 以下の最大の整数を lfloorxrfloor\\lfloor x\\rfloorxx 以上の最小の整数を lceilxrceil\\lceil x\\rceil と書きます。したがって例えば以下が成り立ちます。

  • x=2x = 2 のとき、lfloorfracx2rfloor=1\\lfloor \\frac{x}{2}\\rfloor = 1, lceilfracx2rceil=1\\lceil \\frac{x}{2}\\rceil = 1
  • x=3x = 3 のとき、lfloorfracx2rfloor=1\\lfloor \\frac{x}{2}\\rfloor = 1, lceilfracx2rceil=2\\lceil \\frac{x}{2}\\rceil = 2

制約

  • 1leqXleq10181\\leq X \\leq 10^{18}

入力

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

XX

出力

操作後の黒板に書かれている整数すべての積としてありうる最大値を、998244353998244353 で割った余りを出力してください。


入力例 1

15

出力例 1

192

例えば次のように操作を行うことで、黒板に書かれている整数すべての積を 192192 にすることが可能です。

  • はじめ、黒板は次の状態です:(15)(15)
  • x=15x = 15 として操作を行うことで、黒板は次の状態に変化します:(7,8)(7, 8)
  • x=7x = 7 として操作を行うことで、黒板は次の状態に変化します:(8,3,4)(8, 3, 4)
  • x=4x = 4 として操作を行うことで、黒板は次の状態に変化します:(8,3,2,2)(8, 3, 2, 2)
  • x=8x = 8 として操作を行うことで、黒板は次の状態に変化します:(3,2,2,4,4)(3, 2, 2, 4, 4)。 このとき、黒板に書かれている整数すべての積は 3times2times2times4times4=1923\\times 2\\times 2\\times 4\\times 4 = 192 です。

入力例 2

3

出力例 2

3

操作を一度も行わないことで、黒板に書かれている整数すべての積を 33 にすることが可能です。


入力例 3

100

出力例 3

824552442

操作後の黒板に書かれている整数すべての積としてありうる最大値は、58564588684700165856458868470016 です。これを 998244353998244353 で割った余りを出力します。