A. Интерактивная задача на MAD
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Существует секретная последовательность $$$a_1, a_2, \ldots, a_{2n-1},a_{2n}$$$, которая содержит каждое целое число от $$$1$$$ до $$$n$$$ ровно дважды.

Ваша задача состоит в том, чтобы угадать последовательность, используя запросы следующего типа:

  • «? $$$k\;j_1\;j_2\;\ldots\;j_k$$$» — выберите целое число $$$k$$$ ($$$1 \le k \le 2n$$$) и $$$k$$$ различных индексов $$$j_1, j_2, \ldots, j_k$$$ ($$$1 \le j_1 , j_2 , \ldots , j_k \le 2n$$$). В ответ на запрос жюри вернет $$$\text{MAD}([a_{j_1}, a_{j_2}, \ldots, a_{j_k}])$$$.

Мы определяем $$$\operatorname{MAD}$$$ (максимальный дубликат) целочисленной последовательности как наибольшее целое число, которое появляется как минимум дважды. В частности, если нет числа, которое появляется как минимум дважды, значение $$$\operatorname{MAD}$$$ равно $$$0$$$. Вот некоторые примеры:

  • $$$\operatorname{MAD}([1, 2, 1]) = 1$$$;
  • $$$\operatorname{MAD}([2, 2, 3, 3]) = 3$$$;
  • $$$\operatorname{MAD}([1, 2, 3, 4]) = 0$$$.

Определите секретную последовательность используя не более $$$3n$$$ запросов.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 3000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 300$$$).

Гарантируется, что сумма $$$n^2$$$ по всем наборам входных данных не превосходит $$$10^5$$$.

После того как вы прочитаете эту строку ввода, взаимодействие начинается с вашего первого запроса.

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

Чтобы сделать запрос, выведите строку (без кавычек) в следующем формате:

  • «? $$$k\;j_1\;j_2\;\ldots\;j_k$$$» ($$$1 \le k \le 2n$$$, $$$1 \le j_1 , j_2 , \ldots , j_k \le 2n$$$)

Здесь индексы $$$j_1 , j_2 , \ldots , j_k$$$, которые вы выбрали, должны быть попарно различными.

Затем, после каждого запроса, прочитайте одно целое число — ответ на ваш запрос.

Вы можете сделать не более $$$3n$$$ запросов такого типа.

Если ваша программа нашла последовательность $$$a$$$, выведите строку (без кавычек) в следующем формате:

  • «! $$$a_1\;a_2\;\ldots\;a_{2n-1}\;a_{2n}$$$» ($$$1 \le a_i \le n$$$)

Обратите внимание, что вывод ответа не учитывается в лимите запросов.

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

Интерактор в этой задаче не адаптивен. Другими словами, последовательность $$$a$$$ не меняется в процессе взаимодействия.

Если вы сделаете более $$$3n$$$ запросов во время взаимодействия, ваша программа должна немедленно завершиться, и вы получите вердикт Неправильный ответ. В противном случае вы можете получить произвольный вердикт, потому что ваше решение продолжит читать из закрытого потока.

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

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

Взломы

Чтобы совершить взлом, используйте следующий формат:

Первая строка должна содержать количество наборов входных данных $$$t$$$ ($$$1 \leq t \leq 3000$$$).

Первая строка каждого набора входных данных должна содержать целое число $$$n$$$ ($$$2 \leq n \leq 300$$$).

Следующая строка должна содержать $$$2n$$$ целых чисел $$$a_1,a_2,\ldots,a_{2n}$$$ ($$$1 \leq a_i \leq n$$$). Каждое число от $$$1$$$ до $$$n$$$ должно появляться ровно дважды.

Сумма $$$n^2$$$ по всем наборам входных данных не должна превосходить $$$10^5$$$.

Например, текст взлома, соответствующий примеру из условия, выглядит следующим образом:

2
2
2 2 1 1
2
1 2 1 2

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

2

0

1

2

0

1

1

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


? 2 2 1

? 2 1 3

? 3 1 3 4

! 2 2 1 1

? 2 1 2

? 2 1 3

? 3 1 3 4

! 1 2 1 2
Примечание

В первом наборе входных данных скрытая последовательность $$$a=[2,2,1,1]$$$.

Для запроса «? 2 2 1», жюри возвращает $$$2$$$, потому что $$$\operatorname{MAD}([a_2, a_1]) = \operatorname{MAD}([2, 2]) = 2$$$.

Для запроса «? 2 1 3», жюри возвращает $$$0$$$, потому что $$$\operatorname{MAD}([a_1, a_3]) = \operatorname{MAD}([2, 1]) = 0$$$.

Для запроса «? 3 1 3 4», жюри возвращает $$$1$$$, потому что $$$\operatorname{MAD}([a_1, a_3, a_4]) = \operatorname{MAD}([2 ,1, 1]) = 1$$$.

Обратите внимание, что пример взаимодействия предназначен только для понимания условий и не гарантирует нахождение уникальной последовательности $$$a$$$.