E1. Задача-шутка (простая версия)
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Единственная разница между этой задачей и сложной версией — максимальное количество вопросов.

Это интерактивная задача!

Загадано некоторое целое число $$$1 \le x \le n$$$, которое вам нужно найти. Чтобы найти его, вы можете задать не более $$$\mathbf{82}$$$ вопросов.

В каждом вопросе вы можете выбрать непустое множество целых чисел $$$S$$$ и спросить, принадлежит ли $$$x$$$ множеству $$$S$$$ или нет. После каждого запроса, если $$$x$$$ принадлежит $$$S$$$, вы получите «YES», иначе «NO».

Проблема в том, что не все ответы обязательно верны (некоторые из них шуточные). Гарантируется, что на каждые два последовательных вопроса хотя бы на один из них дан правильный ответ.

Вы также можете сделать не более $$$2$$$ попыток угадать $$$x$$$. Каждый раз, если вы правильно угадаете $$$x$$$, вы получите «:)» и ваша программа должна завершиться, иначе вы получите «:(».

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

Обратите внимание, что на ваши догадки ответа всегда отвечают правильно. Если вы задаете вопрос до и после догадки, по крайней мере на один из этих ваших вопросов будет дан правильный ответ, как обычно.

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

Единственная строка входных данных содержит единственное целое число $$$n$$$ ($$$1 \le n \le 10^5$$$), максимально возможное значение $$$x$$$.

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

Для каждого вопроса, если вы хотите спросить о множестве $$$S$$$, сначала выведите символ «?», затем выведите размер множества $$$S$$$, а затем уже элементы $$$S$$$ один за другим. Все элементы должны быть различными целыми числами от $$$1$$$ до $$$n$$$. После каждого вопроса вы получите ответ на него: «YES» или «NO» в соответствии с условием. Вы можете задать не более $$$82$$$ таких запросов.

Если вы хотите угадать $$$x$$$, сначала выведите «!», а затем выведите свою догадку. Если вы угадаете $$$x$$$ правильно, вы получите «:)» и ваша программа должна завершиться, иначе вы получите «:(». Вы можете сделать не более $$$2$$$ таких догадок.

После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:

  • fflush(stdout) или cout.flush() в C++;
  • System.out.flush() в Java;
  • flush(output) в Pascal;
  • stdout.flush() в Python;
  • смотрите документацию для других языков.

Взломы в этой задаче отключены.

Пример
Входные данные
6

NO

:(

NO

:)
Выходные данные
? 5 1 2 5 4 3

! 6

? 4 1 2 3 4

! 5
Примечание

Если бы ответ на первый вопрос был правильным, то $$$x$$$ было бы равно $$$6$$$, но, как мы видим из первого предположения, $$$6$$$ не является ответом.

Так что ответ на первый вопрос — шутка. Как мы знаем, ответ хотя бы на один из наших двух вопросов правильный, и так как ответ на первый вопрос был шутливым, ответ на второй вопрос должен быть правильным.

Итак, мы понимаем, что $$$x$$$ не равно $$$1, 2, 3$$$ или $$$4$$$, и мы также знаем, что $$$x$$$ не равно $$$6$$$. Следовательно, $$$x$$$ равно $$$5$$$.