经过多年的规划和建造,你终于成功制造出了属于自己的飞船!你立即登上了飞船,开启了前往大拟人猪座(Big Anthropomorphic Pig Constellation)的处女航。几年后,你到达了该星座,并降落在最近的星球上,准备拍些照片,顺便买些纪念品。当你使用飞船内置的翻译器与当地的纪念品商贩讨价还价时,突然收到通知:飞船燃料不足!频繁使用翻译器消耗了比预期更多的燃料,你无法返回地球了。你焦急地寻找加油站。幸运的是,一位当地人给你指了一家可疑的小店,它与你家乡的加油站惊人地相似。
飞船的灵感来源。CC BY-SA 3.0,作者 Edwtie,来自维基共享资源
虽然加油站的外观可能与地球上的相似,但内部却完全不同。在一个长货架上摆放着许多燃料罐,侧面印有奇怪的符号。根据你对火箭燃料的研究,你推断这些符号可能表示罐中燃料的氧化值(oxydilation level)。这些火箭燃料都无法单独燃烧。相反,将两种氧化值分别为 $o_x$ 和 $o_y$ 的火箭燃料混合,可以得到燃烧时间为 $\sqrt{|o_x - o_y|}$ 的燃料。你只买得起三个满罐的燃料,且火箭燃料的燃烧时间是可累加的,因此将氧化值分别为 $o_x$、$o_y$ 和 $o_z$ 的火箭燃料混合,得到的总燃烧时间为:
$$\sqrt{|o_x - o_y|} + \sqrt{|o_y - o_z|} + \sqrt{|o_z - o_x|}$$
你只能使用飞船的翻译器来解码表示氧化值的符号。不幸的是,由于飞船燃料不足,在燃料完全耗尽之前,你最多只能使用翻译器查询 $50$ 个燃料罐。幸运的是,你已知这些火箭燃料是按照氧化值非降序的顺序存放的。你能找出应该购买哪三个燃料罐,以使总燃烧时间最大化吗?
交互格式
这是一个交互式问题。你的程序将与交互器(interactor)进行交互,交互器会读取你程序的标准输出,并写入你程序的标准输入。交互需要遵循以下协议:
首先,交互器会发送一行,包含一个整数 $n$($3 \le n \le 2 \cdot 10^5$),表示火箭燃料的种类数。
然后,你的程序最多可以进行 $50$ 次询问,以找到最优的三个燃料罐。每次询问时,输出一行格式为 ? i($1 \le i \le n$)的内容。交互器将回应一行,包含一个整数 $o_i$($|o_i| \le 10^6$),表示第 $i$ 个燃料罐中燃料的氧化值。
当你确定了最优的三个不同的燃料罐 $x$、$y$ 和 $z$($1 \le x, y, z \le n$,$x \neq y$,$x \neq z$,$y \neq z$)时,输出一行格式为 ! x y z 的内容,随后交互将停止。输出答案不计入询问次数。
如果存在多个可行解,你可以输出其中任意一个。
交互器是非适应性的(non-adaptive):燃料罐的氧化值在最开始就是固定好的,不会根据你的询问而改变。
请确保在每次写入后刷新缓冲区(flush)。
我们提供了一个测试工具来帮助你开发解决方案。
使用超过 $50$ 次询问将导致解答错误(Wrong Answer)。
样例
样例交互 1
从标准输入读取: 4 向标准输出写入: ? 1 从标准输入读取: 1 向标准输出写入: ? 3 从标准输入读取: 3 向标准输出写入: ? 4 从标准输入读取: 3 向标准输出写入: ! 1 2 3
样例交互 2
从标准输入读取: 6 向标准输出写入: ? 1 从标准输入读取: -5 向标准输出写入: ? 6 从标准输入读取: 5 向标准输出写入: ? 2 从标准输入读取: -3 向标准输出写入: ? 5 从标准输入读取: 3 向标准输出写入: ? 3 从标准输入读取: -1 向标准输出写入: ? 4 从标准输入读取: 1 向标准输出写入: ! 4 6 1