Mario 和 Luigi 正在玩一个游戏,他们各自选择了一个不同的数字 $M$ 和 $L$($0 \le M, L < 2^{10^{18}}$)。为了对游戏结果进行谨慎的下注,你想知道谁的数字更大。Mario 和 Luigi 都已经将他们的秘密数字告诉了他们的好朋友 Toadette,Toadette 已经将这两个数字记为具有 $10^{18}$ 位的二进制数。因此,你决定向 Toadette 寻求帮助!
幸运的是,Toadette 愿意帮助你,并允许你向她提出以下两种类型之一的问题:
- 给出两个整数 $a$ 和 $b$,并问:“如果将 $M$ 和 $L$ 写成二进制,在闭区间 $[a, b]$ 内,$M$ 的二进制位是否与 $L$ 在该区间内的二进制位相同?”Toadette 会回答 “YES” 或 “NO”。
- 给出一个整数 $x$,并问:“$M$ 或 $L$ 的第 $x$ 位中哪一个更大?”Toadette 会回答 “MARIO”、“LUIGI” 或 “EQUAL”。
然而,Toadette 担心第一类问题会给你提供过多的信息,所以她决定让事情变得更有趣。每次你提出第一类问题时,她都会以 $\frac{1}{13}$ 的概率(独立且随机地)对你撒谎。你能通过最多提问 192 次来找出谁的数字更大吗?
交互格式
这是一个交互式问题。你将通过标准输入和输出与 Toadette 进行交互。你最多可以提问 192 次。
要提出问题,请向标准输出写入一行,格式为以下之一:
1 a b($0 \le a \le b < 10^{18}$)– 如果将 $M$ 和 $L$ 写成二进制,$M$ 和 $L$ 在区间 $[a, b]$ 内的二进制位是否相同?Toadette 将回答 “YES” 或 “NO”。2 x($0 \le x < 10^{18}$)– 谁的数字的第 $x$ 位更大?Toadette 将根据谁的数字在该位置拥有更大的二进制位来回答 “MARIO” 或 “LUIGI”,如果该位置的二进制位相同则回答 “EQUAL”。
要猜测谁的数字更大,请向标准输出写入一行,格式如下:
! S($S \in \{\text{MARIO}, \text{LUIGI}\}$)– 猜测 $S$ 的数字更大。
你只能进行一次猜测,并且你的程序在进行猜测后必须立即终止。请注意,猜测谁的数字更大不计入 192 次提问的限制。
说明:Toadette 将最低有效位(最右侧)视为索引为 0 的位,将最高有效位(最左侧)视为索引为 $10^{18} - 1$ 的位。例如,对于数字 356(二进制表示为 $0 \dots 0101100100$),区间 $[0, 3]$ 将对应最右侧的四位数字 $0100$。
在每次提问后,请确保输出一个换行符并刷新输出流。为此,请使用:
- C 语言中的
fflush(stdout); - C++ 中的
cout.flush(); - Java 中的
System.out.flush(); - Python 中的
stdout.flush()。
评测说明
提交的程序将在恰好 100 个测试点上进行评测。每个游戏中的数字 $M$ 和 $L$ 可能是也可能不是随机生成的,并且在不同的提交之间可能会有所不同。对于每个第一类问题,Toadette 决定是否撒谎是随机决定的,因此在不同的提交之间也会有所不同。
样例
输入样例 1
NO MARIO
输出样例 1
1 0 4 2 3 ! MARIO