「SFMOI Round I」Strange Madoka Game

题目背景

[English statement](https://www.luogu.com.cn/problem/T510969). **You must submit your code at the Chinese version of the statement.** > いつも君の側にいるから / 无论何时我都与你同在 \ > 儚すぎて / 世界如此虚幻 \ > 消えて行きそうな世界 / 似乎随时随地都会消失 \ > だけど君がいる / 然而只要有你 \ > それだけで守りたいと思った / 我就心甘情愿将它守护

题目描述

**本题和 B2 是不同的问题,请分别仔细阅读两题题面。** **这是一道交互题。** **提示**:我们在题目描述的最后提供了一份简要的、形式化描述的题面。 圆和焰在玩游戏。 圆在心中想了一个非负整数 $m$,让焰猜出 $m$ 的值。当然,圆不会为难焰,所以 $\textcolor{red}{0}\le m\le 10^{17}$。圆不会作弊,也就是说,**圆不会悄悄更换想好的数字。** 焰可以问圆:对于**正**整数 $x$,$m\bmod x$ 的值是多少。焰需要用最少的询问次数来猜出 $m$ 的值。(为了得到全部分数,最多只能使用 $2$ 次询问。) 圆一共和焰玩了 $T$ 次游戏。然而,焰的数学很差,于是她找来了你,来帮她猜出这 $T$ 次游戏的答案。 **形式化地**:有一个隐藏的非负整数 $m\in [\textcolor{red}{0},10^{17}]$。每次询问给定**正**整数 $x$,回答 $m\bmod x$。用最少的询问次数找出 $m$。共有 $T$ 组测试数据。$m$ 的数值在事先确定,不会根据询问变化,也就是说,**交互库是非适应性的**。 【实现细节】 对于每个测试点,输入一行一个正整数 $T$,表示游戏次数。 对于每组测试数据,你可以用以下的格式发起一次询问: - $\texttt{? }x$:询问 $m\bmod x$ 的值。你需要保证 $x$ 是**正**整数,且 $x \in \textcolor{red} {[1,4\times 10^8]}$。 从标准输入流读入一个整数表示答案。特别地,若整数是 $\texttt{-1}$,你的程序已经被判定为 $\texttt{Wrong Answer}$,此时你需要立刻终止程序。 你可以用以下的格式回答答案: - $\texttt{! }m$:回答 $m$ 的值。 在发起询问后,需要刷新缓冲区,否则可能导致 TLE。 - 在 C++ 中,使用 `fflush(stdout)` 或 `cout.flush()`。 特别地,利用 `std::endl` 来换行也会刷新缓冲区。 - 在 Pascal 中,使用 `flush(output)`。 - 在 Python 中,使用 `stdout.flush()`。 - 对于其它语言,可自行查阅文档。

输入输出格式

输入格式


见【实现细节】。

输出格式


见【实现细节】。

输入输出样例

输入样例 #1

1

1

2

输出样例 #1


? 2

? 3

! 5

说明

#### 数据范围 对于 $100\%$ 的数据,保证 $1\le T\le 100$,$m$ 为非负整数,$\textcolor{red}{0}\le m\le 10^{17}$。 #### 评分方式 记单个测试点中,你的询问次数的最大值为 $Q$。则得分 $\mathrm{score}$ 如下所示: $$ \begin{aligned} \mathrm{score}=\begin{cases} 0, & Q\in [81,+\infty) \\ 10, & Q\in [11,81) \\ 25, & Q\in [3,11) \\ 50, & Q\in [0,3) \\ \end{cases} \end{aligned} $$ 本题得分为所有测试点得分的最小值。 本题数据点的范围是非严格单调递增的。