Это интерактивная задача!
Ехаб играет в игру с Лагги. Ехаб имеет два загаданных числа \((a,b)\). Лагги может сказать пару чисел \((c,d)\) и Ехаб ответит:
- 1 если \(a \oplus c>b \oplus d\).
- 0 если \(a \oplus c=b \oplus d\).
- -1 если \(a \oplus c<b \oplus d\).
Операция \(a \oplus b\) обозначает операцию побитовое исключающее «ИЛИ» чисел \(a\) и \(b\).
Лагги нужно угадать \((a,b)\) не более, чем за 62 вопроса. Вам предлагается сыграть в эту игру. Вы играете за Лагги, а программа жюри - за Ехаба.
Гарантируется, что \(0 \le a,b<2^{30}\).
Выходные данные
Чтобы вывести ответ, выведите "! a b" (без кавычек). Не забудьте сбросить буфер вывода после того, как выведете ответ.
Протокол взаимодействия
Чтобы задать вопрос, выведите "? c d" (без кавычек). \(c\) и \(d\) должны быть неотрицательными целыми числами, меньшими \(2^{30}\). Не забудьте сбросить буфер вывода после того, как зададите вопрос.
После каждого вопроса вы должны считать ответ. Если программа жюри отвечает числом -2, это значит, что ваша программа задала больше, чем 62 запроса и должна завершиться.
Чтобы сбросить буфер вывода вы можете использовать:
- fflush(stdout) в C++.
- System.out.flush() в Java.
- stdout.flush() в Python.
- flush(output) в Pascal.
- Прибегните к документации других языков.
Взломы:
Чтобы взломать решение другого участника, выведите два целых числа \(a\) и \(b\) \((0 \le a,b<2^{30})\).
Примечание
В примере из условия:
Загаданные числа: \(a=3\), \(b=1\).
В первом вопросе: \(3 \oplus 2 = 1\) и \(1 \oplus 1 = 0\), и ответ равен 1.
Во втором вопросе: \(3 \oplus 1 = 2\) и \(1 \oplus 2 = 3\), и ответ равен -1.
В третьем вопросе: \(3 \oplus 2 = 1\) и \(1 \oplus 0 = 1\), и ответ равен 0.
После этого программа выводит ответ и завершается.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
1 -1 0
|
? 2 1
? 1 2
? 2 0
! 3 1
|