B. Lost Numbers
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Жюри загадало некоторый массив $$$a$$$, состоящий из $$$6$$$ чисел. Существуют $$$6$$$ особых чисел — $$$4$$$, $$$8$$$, $$$15$$$, $$$16$$$, $$$23$$$, $$$42$$$ — и каждое из них встречается в массиве $$$a$$$ ровно один раз (то есть $$$a$$$ — некоторая перестановка этих чисел).

Вы не знаете ничего о их порядке в массиве, но вы можете отправить до $$$4$$$ запросов. В каждом запросе вы выбираете два индекса $$$i$$$ и $$$j$$$ ($$$1 \le i, j \le 6$$$, $$$i$$$ и $$$j$$$ не обязательно должны быть различны), и в ответ вы получите значение $$$a_i \cdot a_j$$$.

Можете ли вы отгадать массив $$$a$$$?

Массив $$$a$$$ в каждом тесте фиксирован заранее, тестирующая программа не пытается адаптировать его в зависимости от ваших запросов.

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

До того, как ваша программа даст ответ на задачу, она может отправить до $$$4$$$ запросов. Чтобы задать запрос, выведите одну строку следующего вида: $$$?$$$ $$$i$$$ $$$j$$$, где $$$i$$$ и $$$j$$$ должны быть двумя целыми числами, удовлетворяющими условию $$$1 \le i, j \le 6$$$. Строка, которую вы отправляете, должна заканчиваться символом перевода строки. После отправки запроса программа должна сбросить буфер вывода и прочитать ответ на запрос — строку, содержащую одно целое число $$$a_i \cdot a_j$$$. Если вы отправите некорректный запрос (или отправите более $$$4$$$ запросов), ответом будет строка 0. Если ваша программа получила такой ответ, она должна немедленно завершиться — иначе вы можете получить вердикт «Ошибка исполнения», «Превышено ограничение времени» или какой-нибудь другой, а не «Неправильный ответ».

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

Пример
Входные данные
16
64
345
672
Выходные данные
? 1 1
? 2 2
? 3 5
? 4 6
! 4 8 15 16 23 42
Примечание

Если вы хотите отправить взлом по этой задаче, ваш тест должен содержать ровно шесть целых чисел $$$a_1$$$, $$$a_2$$$, ..., $$$a_6$$$, разделенных пробелами. Каждое из $$$6$$$ особых чисел должно встречаться в тесте ровно один раз. Тест должен заканчиваться символом конца строки.