#arc148f. [arc148_f]998244353 → 1000000007

[arc148_f]998244353 → 1000000007

問題文

この問題は output-only です。

符号無し 64 bit 整数の加算・乗算・ 998244353998244353 を除数とする modulo 演算ができるプログラミング言語があります。
この言語を用いて textmod1000000007\\text{mod }1000000007 における乗算を行うプログラムを作成してください。

厳密に説明すると、00 以上 10000000061000000006 以下の整数 a,ba,b が与えられたときに atimesbbmod1000000007a \\times b \\bmod{1000000007} を計算するプログラムを、以下の 仕様形式 に従って作成してください。

プログラムの仕様

このプログラムでは、英大文字で表される A,B,dots,ZA, B, \\dots, Z2626 個の 変数 を扱うことが出来る。
各変数は 00 以上 2642^{64} 未満の整数値 (以下 符号無し 64 bit 整数 と表記) を保持することが出来る。
プログラムの実行開始時点で、AA には整数 aa が、BB には整数 bb が、それ以外の変数には 00 が代入されている。
プログラムの実行終了時点で変数 CCatimesbbmod1000000007a \\times b \\bmod{1000000007} が保持されている必要がある。

プログラムの形式

プログラムの 11 行目にはプログラムの命令数を表す整数 NN (1leqNleq100)(1 \\leq N \\leq 100) が書かれる。
プログラムの 22 行目から N+1N + 1 行目には NN 個の命令が書かれる。命令は上から下に順次実行される。
命令は次の 3 つのいずれかである。

  • add x y z
    • xx(y+z)bmod264(y + z) \\bmod{2^{64}} を代入する。ここでは xx は変数、y,zy, z は変数または符号無し 64 bit 整数である。
  • mul x y z
    • xxytimeszbmod264y \\times z \\bmod{2^{64}} を代入する。ここでは xx は変数、y,zy, z は変数または符号無し 64 bit 整数である。
  • rem x y
    • xxybmod998244353y \\bmod{998244353} を代入する。ここでは xx は変数、yy は変数または符号無し 64 bit 整数である。

入力

標準入力から与えられる入力は空である。

出力

問題文に書かれている仕様・形式に従ったプログラムを出力せよ。

ジャッジ

提出されたプログラムの形式が誤っていた場合、ジャッジの判定は不定である。
提出されたプログラムの形式が正しい場合、ジャッジは 11 ケース毎に 10410^4 個の整数の組 (a,b)(a, b) (0leqa,bleq1000000006)(0 \\leq a, b \\leq 1000000006) に対してプログラムを独立に実行する。(整数の組はジャッジ側があらかじめ用意したものであり、テストケース毎に固定である。)
全ての (a,b)(a, b) の組に対して実行終了時に変数 CCatimesbbmod1000000007a \\times b \\bmod{1000000007} が保持されている場合、ジャッジの判定は AC となる。そうでない場合は WA となる。

出力例

正しい形式で書かれたプログラムの例を示します。(このプログラムは仕様を満たしていないため、提出しても WA となります。)

5
mul C A B
rem C C
add A A 10
add D 2 B
add E 1 0

このプログラムの実行終了時点で各変数に代入されている値は次の通りです。

  • AA : a+10a + 10
  • BB : bb
  • CC : atimesbbmod998244353a \\times b \\bmod{998244353}
  • DD : b+2b + 2
  • EE : 11
  • それ以外の変数 : 00