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

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

Ayush устал запоминать пароль от своего замка и разработал новую схему для установки своего пароля. У замка есть $$$k$$$ позиций, где каждая позиция может содержать целые числа от $$$1$$$ до $$$n$$$. Пароль $$$P$$$ представляет собой последовательность из $$$k$$$ целых чисел, каждое из которых находится в диапазоне $$$[1, n]$$$, $$$i$$$-й элемент которой входит в $$$i$$$-ю позицию замка.

Чтобы установить пароль для своего замка, Ayush придумывает массив $$$A$$$ из $$$n$$$ целых чисел в диапазоне $$$[1, n]$$$ (не обязательно различных). Затем он выбирает $$$k$$$ непустых попарно непересекающихся подмножеств индексов $$$S_1, S_2, ..., S_k$$$ $$$(S_i \underset{i \neq j} \cap S_j = \emptyset)$$$ и устанавливает свой пароль как $$$P_i = \max\limits_{j \notin S_i} A[j]$$$. Другими словами, $$$i$$$-я позиция пароля равна максимуму по всем элементам $$$A$$$, индексы которых не принадлежат $$$S_i$$$.

Вам даны подмножества индексов, выбранных Ayush. Вам нужно угадать пароль. Чтобы сделать запрос, вы можете выбрать непустое подмножество индексов массива и узнать максимум по всем элементам массива с индексами в этом подмножестве. Вы можете задать не более 12 запросов.

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

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

Первая строка каждого набора входных данных содержит два целых числа: $$$n$$$ и $$$k$$$ $$$(2 \leq n \leq 1000, 1 \leq k \leq n)$$$ — размер массива и количество подмножеств соответственно. Далее следуют $$$k$$$ строк. $$$i$$$-я строка содержит целое число $$$c$$$ $$$(1 \leq c \lt n)$$$ — размер подмножества $$$S_i$$$, за которым следуют $$$c$$$ попарно различных целых чисел в диапазоне $$$[1, n]$$$ — индексы, принадлежащие подмножеству $$$S_i$$$.

Гарантируется, что пересечение любых двух подмножеств пусто.

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

Чтобы задать запрос, выведите одну строку:

  • В начале выведите "? c" (без кавычек), где $$$c$$$ $$$(1 \leq c \leq n)$$$ обозначает размер подмножества запрашиваемых индексов, после чего выведите через пробел $$$c$$$ различных целых чисел в диапазоне $$$[1, n]$$$  — индексы, о которых вы хотите задать запрос.

Для каждого запроса вы получите целое число $$$x$$$ — максимальное значение в массиве среди элементов с запрошенными индексами. Если подмножество запрашиваемых индексов недопустимо или вы превысили количество запросов (например, один из индексов больше, чем $$$n$$$), то вы получите $$$x = -1$$$. В этом случае вы должны немедленно прекратить программу.

Когда вы угадали пароль, выведите одну строку "!" (Без кавычек), за которой через пробел следуют $$$k$$$ целых чисел  — позиции пароля.

Угадывание пароля не учитывается при подсчете количества запросов.

После этого вы должны прочитать строку. Если вы угадаете пароль правильно, вы получите строку "Correct". В этом случае вам следует продолжить решение оставшихся наборов входных данных. Если предполагаемый пароль неверен, вы получите строку "Incorrect". В этом случае вы должны немедленно прекратить программу.

Интерактор не адаптивный. Массив $$$A$$$ не изменяется с запросами.

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

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

Формат взломов

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

В первой строке должно содержаться одно целое число $$$t$$$ $$$(1 \leq t \leq 10)$$$ — количество наборов входных данных.

Первая строка каждого набора входных данных должна содержать два целых числа: $$$n$$$ и $$$k$$$ $$$(2 \leq n \leq 1000, 1 \leq k \leq n)$$$ — размер массива и количество подмножеств соответственно. Следующая строка должна состоять из $$$n$$$ целых чисел в диапазоне $$$[1, n]$$$ — массива $$$A$$$. Далее должны следовать $$$k$$$ строк. $$$i$$$-я строка должна содержать целое число $$$c$$$ $$$(1 \leq c \lt n)$$$ — размер подмножества $$$S_i$$$, за которым должны следовать $$$c$$$ различных целых чисел в диапазоне $$$[1, n]$$$ — индексы, принадлежащие подмножеству $$$S_i$$$.

Пересечение любых двух подмножеств должно быть пустым.

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

1

2

3

4

Correct
Выходные данные
? 1 1

? 1 2

? 1 3

? 1 4

! 4 3
Примечание

Массив $$$A$$$ в примере равен $$$[1, 2, 3, 4]$$$. Длина пароля составляет $$$2$$$. Первый элемент пароля  — это максимум из $$$A[2]$$$, $$$A[4]$$$ (поскольку первое подмножество содержит индексы $$$1$$$ и $$$3$$$, мы берем максимум по остальным индексам). Второй элемент пароля  — это максимум из $$$A[1]$$$, $$$A[3]$$$ (поскольку второе подмножество содержит индексы $$$2$$$, $$$4$$$).

Не забудьте считать строку "Correct" / "Incorrect" после угадывания пароля.