E. XOR-угадайка
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это интерактивная задача. Не забывайте о том, что ваша программа должна каждый раз после вывода запроса сбрасывать буфер вывода. Для сброса буфера вывода можно использовать fflush(stdout) в C++, system.out.flush() в Java, stdout.flush() в Python или flush(output) в Pascal. Если вы используете другой язык программирования, посмотрите в его документации, как выполняется эта операция. Также рекомендуем вам прочесть руководство по интерактивным задачам: https://codeforces.me/blog/entry/45307.

Мы загадали целое число $$$x$$$, не меньше $$$0$$$ и не больше $$$2^{14} - 1$$$. Вы должны угадать это число.

Для этого вы можете задать не более $$$2$$$ запросов. Каждый запрос должен состоять из $$$100$$$ целых чисел $$$a_1$$$, $$$a_2$$$, ..., $$$a_{100}$$$ (каждое число должно быть не меньше $$$0$$$ и не больше $$$2^{14} - 1$$$). В ответ на запрос мы выберем целое число $$$i$$$ ($$$1 \le i \le 100$$$) и сообщим вам значение $$$a_i \oplus x$$$ (побитовое исключающее ИЛИ чисел $$$a_i$$$ и $$$x$$$). Все $$$200$$$ чисел, которые вы используете в запросах, обязательно должны быть различны.

Гарантируется, что значение $$$x$$$ в каждом тесте зафиксировано, но выбор числа $$$i$$$ в каждом запросе может зависеть от того, какие числа вы посылаете.

Выходные данные

Чтобы дать ответ на задачу, ваша программа должна отправить одну строку $$$!$$$ $$$x$$$ с переводом строки в конце. После этого программа должна сбросить буфер вывода и завершиться.

Протокол взаимодействия

До того, как ваша программа даст ответ, она может отправить не более $$$2$$$ запросов. Чтобы отправить запрос, выведите строку следующего формата: $$$?$$$ $$$a_1$$$ $$$a_2$$$ ... $$$a_{100}$$$, где каждое $$$a_j$$$ должно быть целым числом из отрезка $$$[0, 2^{14} - 1]$$$. Строка, которую вы отправляете, должна заканчиваться символов перевода строки. После отправки запроса программа должна сбросить буфер вывода и прочитать ответ на запрос — значение $$$a_i \oplus x$$$ для некоторого $$$i \in [1, 100]$$$. Никакое число не должно быть использовано в запросах дважды, ни в пределах одного и того же запроса, ни в разных запросах.

Если вы зададите некорректный запрос (или же количество запросов превысит $$$2$$$), ответом будет число $$$-1$$$. Если ваша программа получила такой ответ, она должна немедленно завершиться — иначе вы можете получить вердикт «Ошибка исполнения», «Превышено ограничение времени» или какой-нибудь другой, а не «Неправильный ответ».

Пример
Входные данные
0
32
Выходные данные
? 3 5 6
? 32 24 37
! 5
Примечание

Пример взаимодействия не является корректным — вы должны отправить ровно $$$100$$$ целых чисел в каждом запросе. Все остальное корректно.

Взломы в этой задаче запрещены.