#P1060. 异或猜数

异或猜数

题目描述

本题是交互题。

交互器预先选定了一个整数 xx,并且 xx 的取值范围是 0021412^{14}-1。你需要通过很少的询问确定这个整数。

你最多可以询问 22 次。每次询问时,你需要一次性提交恰好 100100 个整数。交互器会在你提交的这 100100 个整数中任选一个数 aia_i,并把 aixa_i\oplus x 返回给你。

需要特别注意:两次询问里出现过的所有整数都必须互不相同,也就是说总共最多出现 200200 个数,任意两个都不能相等。

输入格式

原交互题开始时没有普通输入。

在本地测试中,交互器会从隐藏输入文件读取秘密整数。隐藏输入文件只包含一个整数 xx

输出格式

若要询问,输出一行:

? a_1 a_2 ... a_100

其中必须有恰好 100100 个整数,且每个整数都满足 0ai21410\le a_i\le 2^{14}-1。同一次询问内不能有重复数字,不同询问之间也不能复用数字。

每次询问后必须刷新输出,并读入交互器返回的整数。

若已经推出 xx,输出:

! x

输出最终答案后刷新缓冲区并结束程序。

样例

0
32
? 3 5 6
? 32 24 37
! 5

样例说明

样例只是为了展示交互输入输出的形式,并不是一份完整合法的询问记录。

在正式交互中,每次以 ? 开头的询问都必须跟随恰好 100100 个整数。

数据范围

0x21410\le x\le 2^{14}-1

最多允许 22 次询问。

每次询问必须包含恰好 100100 个整数。

所有询问中出现过的整数必须两两不同。