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

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

Жюри загадало перестановку$$$^\dagger$$$ $$$p$$$ длины $$$n$$$.

В один запрос можно выбрать два целых числа $$$l$$$ и $$$r$$$ ($$$1 \le l < r \le n$$$), заплатив за это $$$(r - l)^2$$$ монет. В ответ вы получите количество инверсий$$$^\ddagger$$$ в подмассиве $$$[p_l, p_{l + 1}, \ldots p_r]$$$.

Найдите индекс максимального элемента в $$$p$$$, потратив не более $$$5 \cdot n^2$$$ монет.

Примечание: интерактор не является адаптивным: перестановка фиксируется до выполнения каких-либо запросов.

$$$^\dagger$$$ Перестановкой длины $$$n$$$ является массив, состоящий из $$$n$$$ различных целых чисел от $$$1$$$ до $$$n$$$ в произвольном порядке. Например, $$$[2,3,1,5,4]$$$ — перестановка, но $$$[1,2,2]$$$ не перестановка ($$$2$$$ встречается в массиве дважды) и $$$[1,3,4]$$$ тоже не перестановка ($$$n=3$$$, но в массиве встречается $$$4$$$).

$$$^\ddagger$$$ Количеством инверсий в массиве является количество пар индексов $$$(i,j)$$$ таких, что $$$i < j$$$ и $$$a_i > a_j$$$. Например, массив $$$[10,2,6,3]$$$ содержит $$$4$$$ инверсии: $$$(1,2),(1,3),(1,4)$$$ и $$$(3,4)$$$.

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

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

Единственная строка каждого набора входных данных содержит единственное целое число $$$n$$$ ($$$2 \le n \le 2000$$$) — длину скрытой перестановки $$$p$$$.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2000$$$.

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

Взаимодействие для каждого набора входных данных начинается с чтения целого числа $$$n$$$.

Для формирования запроса выведите «? l r» ($$$1 \le l < r \le n$$$) без кавычек. После этого вы должны прочитать одно единственное целое число — ответ на ваш запрос.

Если вместо ответа или допустимого значения $$$n$$$ вы получите целое число $$$-1$$$, то это означает, что ваша программа сделала некорректный запрос, превысила лимит запросов или дала неверный ответ на предыдущем наборе входных данных. При получении вердикта «Неправильный ответ» ваша программа должна немедленно завершиться. В противном случае можно получить произвольный вердикт, поскольку решение будет продолжать считывать данные из закрытого потока.

Когда вы будете готовы дать окончательный ответ, выведите «! i» ($$$1 \le i \le n$$$) без кавычек — индекс максимума загаданной перестановки. После решения одного набора входных данных программа должна сразу же переходить к следующему. После решения всех наборов входных данных программа должна быть немедленно завершена.

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

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

Взломы

Для взлома используйте следующий формат:

Первая строка содержит целое число $$$t$$$ ($$$1 \le t \le 100$$$) — количество наборов входных данных.

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

Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$p_1,p_2,\ldots, p_n$$$ ($$$1 \le p_i \le n$$$), причем $$$p$$$ должно быть перестановкой.

Сумма $$$n$$$ по всем наборам входных данных не должна превышать $$$2000$$$.

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

1

0

2

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

? 1 3

? 3 4

! 4

? 1 2

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

В первом тесте взаимодействие происходит следующим образом:

РешениеЖюриОбъяснение
2Имеется $$$2$$$ набора входных данных.
4В первом наборе входных данных загадана перестановка $$$[1,3,2,4]$$$ длины $$$4$$$.
? 1 3 1Решение запрашивает количество инверсий в подмассиве $$$[1,3,2]$$$, заплатив $$$4$$$ монеты, а жюри отвечает $$$1$$$.
? 3 4 0Решение запрашивает количество инверсий в подмассиве $$$[2,4]$$$, заплатив $$$1$$$ монету, а жюри отвечает $$$0$$$.
! 4 Решение каким-то образом определило, что $$$p_4 = 4$$$, и выводит это. Поскольку ответ правильный, жюри переходит к следующему набору входных данных.
2Во втором наборе входных данных загадана перестановка $$$[2,1]$$$ длины $$$2$$$.
? 1 2 1Решение запрашивает количество инверсий в подмассиве $$$[2,1]$$$, заплатив $$$1$$$ монету, а жюри отвечает $$$1$$$.
! 1 Решение каким-то образом определило, что $$$p_1 = 2$$$, и выводит это. Поскольку ответ верен и наборов входных данных больше нет, жюри и решение завершаются.

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