Это интерактивная задача.
Рудольф предложил Бернарду сыграть в наперстки, но не совсем обычные. Он выложил в ряд $$$N$$$ наперстков, положил под два из них по шарику и перемешал. После этого Бернард должен был назвать номера наперстков, под которыми находятся шарики. Но Бернард был усталый и не смог уследить за Рудольфом.
Чтобы Бернард не расстроился Рудольф предложил по-другому угадать номера наперстков. Он разрешил Бернарду сделать $$$50$$$ запросов вида «? L R» $$$(1 \le L \le R \le N)$$$. В ответ на каждый запрос Рудольф ответит, сколько шариков находится под наперстками в диапазоне от $$$L$$$ до $$$R$$$.
Бернард боится упасть в глазах Рудольфа, если не решит и эту задачу. Поэтому он попросил Вас помочь ему.
Первая строка содержит одно целое число $$$N$$$ $$$(2 \leq N \leq 10^6)$$$ — количество наперстков.
Выведите в стандартный поток строку вида «! X Y», где $$$X, Y (1 \le X \lt Y \le N)$$$ — позиции наперстков, под которыми находятся шарики.
Чтобы сделать запрос, выведите в стандартный поток строку вида «? L R» $$$(1 \le L \le R \le N)$$$. После этого выведите перевод строки и выполните операцию $$$flush$$$.
В ответ на запрос придёт одно целое число — количество шариков в диапазоне от $$$L$$$ до $$$R$$$.
Чтобы вывести ответ на задачу, выведите в стандартный поток строку вида «! X Y», где $$$X, Y (1 \le X \lt Y \le N)$$$ — позиции наперстков, под которыми находятся шарики, и завершите программу.
Если вы сделаете более $$$50$$$ запросов вида «? L R» или сделаете некорректный запрос, решение получит вердикт «Неправильный ответ».
Если в какой-то момент ваша программа ничего не будет выводить или вы забудете выполнить операцию $$$flush$$$ после вывода вопроса или ответа, решение получит вердикт «Решение зависло».
Чтобы выполнить операцию $$$flush$$$, можете использовать (сразу после вывода запроса и перевода строки):
10 1 1 2 1 0
? 2 4 ? 3 3 ? 2 10 ? 5 6 ? 6 6 ! 3 5
| Name |
|---|


