#SummerP0024. 失去的

失去的

Description

这是一个交互题。

在与测试程序通信时,请记得刷新输出。你可以在 C++ 中使用 fflush(stdout)\texttt{fflush(stdout)},在 Java 中使用 system.out.flush()\texttt{system.out.flush()},在 Python 中使用 stdout.flush()\texttt{stdout.flush()}

评测程序已经猜测了一个由 66 个整数构成的数组 aa。有 66 个特殊数字 44881515161623234242 每个数字在 aa 中恰好出现一次(因此,aa 是这 66 个数字的某种排列)。

你并不知道它们的顺序,但你可以最多询问 44 次。在每次询问中,你可以选择两个下标 iijj1i,j61 \le i, j \le 6iijj 不一定不同),你将得到 aiaja_i \cdot a_j 的值作为回应。

你能猜出数组 aa 吗?

对于每个测试,数组 aa 是预先固定的,交互程序不会根据你的询问做出自适应的改变。

Interaction

在提交答案前,你最多可以询问 44 次。

每次询问,输出一行,格式为:?ij? i j,其中 iijj 是两个整数,满足 1i,j61 \le i, j \le 6。该行末尾需换行。

每次询问后,刷新输出并读取一行作为回应,内容为一个整数 aiaja_i \cdot a_j。如果你提交了不合法的询问(或询问次数超过 44 次),回应将是字符串 00。收到这样的回应后,你的程序应立即终止,否则可能会收到"运行时错误"、"超时"或其他非"答案错误"的判定。

要给出答案时,你的程序应输出一行:!a1a2a3a4a5a6! a_1 a_2 a_3 a_4 a_5 a_6,末尾换行。之后刷新输出并正常结束程序。

Samples

16
64
345
672
? 1 1
? 2 2
? 3 5
? 4 6
! 4 8 15 16 23 42