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

Это интерактивная задача. Не забывайте при выводе запросов сбрасывать буфер с помощью cout.flush() или fflush(stdout) в C++ и аналогичных функций в других языках программирования.

На столе стоят $$$n$$$ коробок с подарками, пронумерованные от $$$1$$$ по $$$n$$$ слева направо. Известно, что ровно в $$$k$$$ из них лежат ценные подарки — в остальных просто камешки на удачу. Выглядят все коробки одинаково и отличить их можно только по весу. Все коробки с камнями весят одинаково и строго больше, чем коробки с ценными подарками. Массы коробок с подарками же могут как совпадать, так и различаться между собой.

Вы можете сделать не более $$$50$$$ запросов (без учета вывода ответа). Каждым запросом вы можете сравнить массы двух непересекающихся подмножеств коробок $$$a_1, a_2, \dots, a_{k_a}$$$ и $$$b_1, b_2, \dots, b_{k_b}$$$ на чашечных весах. В ответ вы получите один из четырех вариантов:

  • FIRST, если подмножество $$$a_1, a_2, \dots, a_{k_a}$$$ тяжелее;
  • SECOND, если подмножество $$$b_1, b_2, \dots, b_{k_b}$$$ тяжелее;
  • EQUAL, если массы подмножеств совпадают;
  • WASTED, если запрос некорректен или превышено количество запросов.

Используя данные запросы (или просто интуицию), определите коробку с ценным подарком с минимальным номером.

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

Входные данные состоят из нескольких наборов. В начале вам выдается целое число $$$T$$$ ($$$1 \le T \le 500$$$) — количество наборов входных данных.

В начале каждого набора вам выдаются два целых числа $$$n$$$ и $$$k$$$ ($$$2 \le n \le 1000$$$, $$$1 \le k \le \frac{n}{2}$$$) — количество коробок в ряду и количество с ценными подарками среди них.

Гарантируется, что порядок коробок в каждом наборе фиксирован и сумма $$$n$$$ по всем наборам не превосходит $$$1000$$$.

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

Для каждого набора входных данных выведите минимальный номер коробки, содержащей ценный подарок, в следующем формате: «! $$$x$$$», где $$$x$$$ ($$$1 \le x \le n$$$) — искомый номер.

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

Выводите каждый запрос в три строки. В первой строке выводите размеры подмножеств в следующем формате: «? $$$k_a$$$ $$$k_b$$$», где $$$k_a$$$ и $$$k_b$$$ ($$$1 \le k_a, k_b \le n$$$; $$$k_a + k_b \le n$$$) — их соответствующие размеры.

Во второй строке выведите $$$k_a$$$ целых чисел $$$a_1, a_2, \dots, a_{k_a}$$$ ($$$1 \le a_i \le n$$$; $$$a_i \neq a_j$$$ при $$$i \neq j$$$) — номера коробок в первом подмножестве.

В третьей строке выведите $$$k_b$$$ целых чисел $$$b_1, b_2, \dots, b_{k_b}$$$ ($$$1 \le b_i \le n$$$; $$$b_i \neq b_j$$$ при $$$i \neq j$$$) — номера коробок во втором подмножестве.

Подмножества не должны пересекаться, то есть $$$a_i \neq b_j$$$ для всех $$$i$$$ и $$$j$$$.

В ответ будет получен один из четырех вариантов, описанных выше. В случае получения WASTED завершите работу программы во избежание получения вердиктов тестирования, отличных от Wrong Answer.

Пример
Входные данные
2
2 1
-
-
-
FIRST
-
5 2
-
-
-
FIRST
-
-
-
SECOND
-
-
-
EQUAL
-
Выходные данные
-
-
? 1 1
1
2
-
! 2
-
? 1 1
1
2
-
? 2 3
4 2
1 3 5
-
? 1 1
4
5
-
! 1
Примечание

Дополнительные разделители «–» в примере использованы только для наглядности самого примера. При отправке запросов и получении ответов не должно быть никаких лишних символов или переводов строк.

Взломы в данной задаче запрещены.