G. Угадай число
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Ваша цель — угадать загаданное число $$$x$$$, находящееся между $$$1$$$ и $$$M = 10004205361450474$$$, включительно. Вы можете использовать не больше $$$5$$$ запросов.

В каждом запросе вы можете вывести возрастающую последовательность из не более чем $$$k \leq x$$$ целых чисел, каждое из которых принадлежит отрезку от $$$1$$$ до $$$M$$$. В ответ Вы получите один из следующих результатов:

  • или загаданное число встречается в вашей последовательности и вы незамедлительно выигрывате.
  • или вы получите, как загаданное число соотносится с числами в запросе. Более формально, вы или узнаете, что он меньше всех чисел в запросе, или что он больше всех чисел в запросе или вы получите такое $$$i$$$, что загаданное число $$$x$$$ находится между $$$i$$$-м и $$$(i+1)$$$-м числами в вашей последовательности.

Смотрите раздел «Протокол взаимодействия» для лучшего понимания.

Обращаем ваше внимание на то, что интерактор адаптивен, то есть, загаданное число может зависеть от запросов, сделанных решением. Гарантируется, что эта информация непротиворечива в любой момент времени; то есть, всегда найдётся число, которое изначально мог загадать интерактор, чтобы его ответы на запрос были корректными.

Взломы разрешены только с фиксированным загаданным числом. Взлом в этой задаче представляет собой одно число между $$$1$$$ и $$$M$$$. Во всех претестах интерактор также загадывает число изначально.

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

Вы можете сделать не более $$$5$$$ запросов. В начале каждого запроса выведите число $$$k$$$ ($$$1 \le k \le 10^4$$$) и возрастающую последовательность $$$t_0 < t_1 < \ldots < t_{k-1}$$$ из $$$k$$$ целых чисел из отрезка от $$$1$$$ до $$$M$$$ включительно. Если $$$k > x$$$, Вы проиграли.

В ответ Вам придёт одно число.

  • если это $$$-2$$$, Вы сделали некорректный запрос или проиграли. Если ваша программа завершится сразу после получения числа $$$-2$$$, то вы получите вердикт Wrong answer. В противном случае вы можете получить любой вердикт, так как программа продолжит чтение из закрытого потока;
  • если это $$$-1$$$, то вы выиграли и также должны завершиться;
  • иначе вы получите число $$$i$$$ между $$$0$$$ и $$$k$$$ включительно. Если $$$i = 0$$$, то $$$x < t_0$$$. Если $$$i = k$$$, то $$$t_{k-1} < x$$$, иначе $$$t_{i-1} < x < t_i$$$.

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

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

0

-1
Выходные данные
2 2 3

2 20 30

3 5 7 9
Примечание

В первом примере загадано число $$$5$$$