_Это интерактивная задача. Здесь ваша программа должна по мере решения обмениваться информацией с программой жюри. Обратите внимание, что после вывода каждого сообщения ваша программа должна очищать потоковый буфер, чтобы выведенная вами информация дошла до программы жюри: например, это делают вызовы «fflush(stdout)» или «cout.flush()» в C++, «System.out.flush()» в Java, «flush(output)» в Pascal, «sys.stdout.flush()» в Python._
Если вы еще не знали, NC обожает Рождество. Его бесконечная любовь к этому празднику способна преодолевать световые барьеры, искривлять течение времени и производить взрывы, разрушающие целые галактики.
Одна из самых важных вещей для NC в Рождество - это подарки. Ему стало известно, что Тамара и Малкольм спрятали его подарок где-то на заднем дворе. NC просто обязан проверить свой подарок до Рождества, ведь если подарок окажется не идеальным, то весь праздник будет испорчен! (Но еще есть время избить Тамару и Малкольма молотком и заставить их подарить NC на Рождество что-то действительно стоящее).
Задний двор представляет из себя прямоугольное поле, левый нижний конец которого находится в точке (0, 0), а правый верхний в точке (n, m), таким образом размер поля (n + 1) × (m + 1). К счастью, у NC есть Интерактивный Отыскатель Подарков — устройство, позволяющее определить расстояние от любой точки до подарка. Интерактивный Отыскатель работает следующим образом: NC называет ему точку (x, y), а Отыскатель возвращает ему единственное число, равное |x - X| + |y - Y|, где (X, Y) - место нахождения подарка. До Рождества осталось мало времени, поэтому NC успеет сделать *не более чем 10 запросов.*
NC очень взволнован что может не успеть найти подарок до Рождества, поэтому он просит вас помочь ему!
В первой строке содержатся два целых числа n и m (0 ≤ n ≤ 109, 0 ≤ m ≤ 109).
После каждого запроса вашей программы программа жюри выводит единственное число, равное расстоянию от запрошенной вами точки до подарка как описано в условии задачи.
Каждый запрос должен состоять из знака вопроса (_?_), после которого через пробел необходимо вывести ровно два целых числа x и y (0 ≤ x ≤ n, 0 ≤ y ≤ m) — точка, расстояние от которой до подарка вы хотите узнать.
Если вы уверены что нашли точку, в которой находится подарок, вы должны вывести ответ и завершить работу программы. Вывод ответа должен начинаться с восклицательного знака (_!_), после которого через пробел должны быть выведены два целых числа X и Y (0 ≤ X ≤ n, 0 ≤ Y ≤ m). *Вывод ответа учитывается в общем числе запросов*.
Если ваш запрос не будет удовлетворять описанным ограничениям, то Интерактивный Отыскатель Подарков сломается, вы не найдете подарок, Рождество будет испорчено, а ваша программа получит вердикт Wrong Answer.
Напоминаем, что после каждого запроса и вывода ответ следует очищать потоковый буфер.
Строки «запрос участника» и «ответ системы» в примере приведены лишь для того, чтобы было более понятно, в каком порядке выводятся сообщения. При решении задачи вам не нужно выводить эти строки, программа жюри также не будет выводить такие строки.
## Входные Данные
В первой строке содержатся два целых числа n и m (0 ≤ n ≤ 109, 0 ≤ m ≤ 109).После каждого запроса вашей программы программа жюри выводит единственное число, равное расстоянию от запрошенной вами точки до подарка как описано в условии задачи.
## Выходные Данные
Каждый запрос должен состоять из знака вопроса (_?_), после которого через пробел необходимо вывести ровно два целых числа x и y (0 ≤ x ≤ n, 0 ≤ y ≤ m) — точка, расстояние от которой до подарка вы хотите узнать. Если вы уверены что нашли точку, в которой находится подарок, вы должны вывести ответ и завершить работу программы. Вывод ответа должен начинаться с восклицательного знака (_!_), после которого через пробел должны быть выведены два целых числа X и Y (0 ≤ X ≤ n, 0 ≤ Y ≤ m). *Вывод ответа учитывается в общем числе запросов*.Если ваш запрос не будет удовлетворять описанным ограничениям, то Интерактивный Отыскатель Подарков сломается, вы не найдете подарок, Рождество будет испорчено, а ваша программа получит вердикт Wrong Answer. Напоминаем, что после каждого запроса и вывода ответ следует очищать потоковый буфер.
## Примеры
Входные данные2 2ответ системы:1ответ системы:3ответ системы:0Выходные данныезапрос участника:? 1 1запрос участника:? 2 0запрос участника:? 1 2запрос участника:! 1 2Входные данные1 2ответ системы:1ответ системы:1ответ системы:2Выходные данныезапрос участника:? 1 1запрос участника:? 0 2запрос участника:? 0 1запрос участника:! 1 2
## Примечание
Строки «запрос участника» и «ответ системы» в примере приведены лишь для того, чтобы было более понятно, в каком порядке выводятся сообщения. При решении задачи вам не нужно выводить эти строки, программа жюри также не будет выводить такие строки.
[samples]
**Definitions**
Let $ n, m \in \mathbb{Z} $ with $ 0 \leq n, m \leq 10^9 $.
Let $ (X, Y) \in \{0, 1, \dots, n\} \times \{0, 1, \dots, m\} $ be the unknown target point (gift location).
The distance function is the Manhattan distance: $ d(x, y) = |x - X| + |y - Y| $.
**Constraints**
- You may make at most 10 queries.
- Each query: output `? x y` with $ 0 \leq x \leq n $, $ 0 \leq y \leq m $.
- Upon discovery, output `! X Y` and terminate.
- All queries and final answer must be within bounds.
**Objective**
Identify $ (X, Y) $ using at most 10 Manhattan distance queries.