这是一道交互式问题。评测机选择了一个实数 $a$($|a| \le 10^9$),其小数点后最多有 5 位数字,你需要猜出这个数。你可以向评测机发送以下两种类型的询问:
- 发送一个实数 $x$,评测机将返回 $sign(\sin(a \cdot x))$。
- 发送一个实数 $y$ 来尝试猜测数字 $a$。
你最多可以发送 200 次第一种类型的询问,且只能发送一次第二种类型的询问。如果你的答案与真实值之间的绝对误差或相对误差不超过 $10^{-6}$,则你的答案将被视为正确。
输入格式
对于你的每一次第一种类型的询问,评测机都会在单独的一行中输出一个数字:0、1 或 -1。
对于第二种类型的询问,评测机不会给出任何回应。
输出格式
在每一行中输出你的一个询问。
输出 ? x 以获取 $sign(\sin(a \cdot x))$,或者如果你认为答案是 $y$,则输出 ! y。
你最多可以使用 200 次第一种类型的询问。
你的程序在发送第二种类型的询问后应立即终止。
样例
输入样例 1
1 -1
输出样例 1
? 1 ? -1 ! 1
说明
$sign(\sin(a \cdot x))$ 将使用 math.h 中的标准 C++ 函数和 double 数据类型进行计算。