Это интерактивная задача.
Вид пингвинов, который исследует Blackslex, живет на острове, представляющем собой матрицу с $$$n$$$ строками и $$$n$$$ столбцами. В каждой ячейке матрицы живет ровно один пингвин.
Он обозначил каждого пингвина целым числом от $$$1$$$ до $$$n^2$$$. Через некоторое время некоторые пингвины мигрировали в другую ячейку. После миграции каждый пингвин все еще будет находиться в какой-то ячейке матрицы, и в каждой ячейке будет ровно один пингвин. Ему нужно узнать текущее положение каждого пингвина.
Для этого он может спросить у пингвина, как далеко находится другой пингвин от него.
Формально, для возможной матрицы $$$x$$$, представляющей положение всех пингвинов, обозначим $$$\operatorname{dist}(x, i, j)$$$ как манхэттенское расстояние пингвина $$$i$$$ до пингвина $$$j$$$ в $$$x$$$$$$^{\text{∗}}$$$.
Существует скрытая матрица $$$a$$$ с $$$n$$$ строками и $$$n$$$ столбцами. Вам нужно найти матрицу $$$b$$$, которая удовлетворяет следующим условиям:
Для этого вы можете сделать следующий запрос не более чем $$$3n^2 + 150$$$ раз.
$$$^{\text{∗}}$$$Обозначим $$$r_i$$$, $$$c_i$$$ как строку и столбец, в которых находится пингвин $$$i$$$, и аналогично для $$$r_j$$$, $$$c_j$$$, тогда манхэттенское расстояние равно $$$|r_i - r_j| + |c_i - c_j|$$$.
Каждый тест содержит несколько наборов входных данных. Первая строка содержит целое число $$$t$$$ ($$$1 \leq t \leq 200$$$) — количество наборов входных данных. Далее следует описание наборов.
Первая строка каждого набора содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 100$$$) — размер острова.
Гарантируется, что общая сумма всех значений $$$n$$$ по всем наборам входных данных не превышает $$$500$$$.
Чтобы задать запрос, выберите два целых числа $$$i$$$, $$$j$$$ ($$$1 \leq i, j \leq n^2$$$) и выведите '? $$$i$$$ $$$j$$$' (без кавычек) в строку.
Вы получите одно целое число — расстояние между пингвинами $$$i$$$ и $$$j$$$.
Вы можете сделать не более чем $$$3n^2 + 150$$$ запросов в каждом наборе входных данных.
После завершения ваших запросов выведите '!' в строке, затем выведите $$$n$$$ строк, каждая из которых содержит $$$n$$$ целых чисел, $$$j$$$-е целое число в $$$i$$$-й строке равно $$$b_{i,j}$$$.
Ваш вывод должен удовлетворять заданным условиям, и вы можете вывести любое такое $$$b$$$, если возможно несколько. Обратите внимание, что это не считается запросом и не учитывается при подсчете количества сделанных запросов.
После этого переходите к следующему набору входных данных.
Взаимодействие в этой задаче не адаптивно. Другими словами, матрица не меняется в процессе взаимодействия.
Если вы сделаете более $$$3n^2 + 150$$$ запросов для набора входных данных во время взаимодействия, ваша программа должна немедленно завершиться, и вы получите вердикт Неправильный ответ. В противном случае вы можете получить произвольный вердикт, поскольку ваше решение продолжит чтение из закрытого потока.
После вывода запроса не забудьте вывести конец строки и сбросить вывод. В противном случае вы получите Превышен лимит бездействия. Для этого используйте:
Взломы
Чтобы сделать взлом, следуйте формату теста ниже.
Первая строка содержит количество наборов входных данных $$$t$$$ ($$$1 \le t \le 200$$$). Далее следует описание наборов входных данных.
Первая строка каждого набора содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 100$$$) — размер острова.
Следующие $$$n$$$ строк содержат $$$n$$$ целых чисел, $$$j$$$-е целое число в $$$i$$$-й строке равно $$$a_{i,j}$$$ — метка пингвина в строке $$$i$$$, столбце $$$j$$$.
Должно выполняться условие, что общая сумма всех значений $$$n$$$ по всем наборам входных данных не превышает $$$500$$$.
2 2 1 2 1 1 2 1 3 3
? 1 2 ? 1 3 ? 1 4 ? 2 3 ? 2 4 ? 3 4 ! 3 4 2 1 ? 1 8 ! 9 1 3 4 2 7 8 5 6
Обратите внимание, что дополнительные строки предназначены для удобства чтения. Ваше решение не должно выводить эти дополнительные строки.
В первом примере матрица $$$a$$$ выглядит так:
| 1 | 4 |
| 2 | 3 |
Во втором примере матрица $$$a$$$ выглядит так:
| 9 | 1 | 3 |
| 4 | 2 | 7 |
| 8 | 5 | 6 |
Взаимодействие выглядит следующим образом.
| Участник | Судья | Описание |
| 2 | Начало первого примера. Размер острова $$$n=2$$$. | |
| ? 1 2 | Участник спрашивает о расстоянии между пингвинами с метками $$$1$$$ и $$$2$$$. | |
| 1 | Расстояние между пингвинами с метками $$$1$$$ и $$$2$$$ равно $$$1$$$. | |
| ? 1 3 | Участник спрашивает о расстоянии между пингвинами с метками $$$1$$$ и $$$3$$$. | |
| 2 | Расстояние между пингвинами с метками $$$1$$$ и $$$3$$$ равно $$$2$$$. | |
| ? 1 4 | Участник спрашивает о расстоянии между пингвинами с метками $$$1$$$ и $$$4$$$. | |
| 1 | Расстояние между пингвинами с метками $$$1$$$ и $$$4$$$ равно $$$1$$$. | |
| ? 2 3 | Участник спрашивает о расстоянии между пингвинами с метками $$$2$$$ и $$$3$$$. | |
| 1 | Расстояние между пингвинами с метками $$$2$$$ и $$$3$$$ равно $$$1$$$. | |
| ? 2 4 | Участник спрашивает о расстоянии между пингвинами с метками $$$2$$$ и $$$4$$$. | |
| 2 | Расстояние между пингвинами с метками $$$2$$$ и $$$4$$$ равно $$$2$$$. | |
| ? 3 4 | Участник спрашивает о расстоянии между пингвинами с метками $$$3$$$ и $$$4$$$. | |
| 1 | Расстояние между пингвинами с метками $$$3$$$ и $$$4$$$ равно $$$1$$$. | |
| ! | Участник определил возможную матрицу $$$b$$$. | |
| 3 4 | Обратите внимание, что матрица не обязательно должна быть точно такой же, но должно выполняться равенство $$$\operatorname{dist}(a, i, j) = \operatorname{dist}(b, i, j)$$$ для всех $$$1 \leq i, j \leq n^2$$$. | |
| 2 1 | ||
| 3 | Начало второго примера. Размер острова $$$n=3$$$. | |
| ? 1 8 | Участник спрашивает о расстоянии между пингвинами с метками $$$1$$$ и $$$8$$$. | |
| 3 | Расстояние между пингвинами с метками $$$1$$$ и $$$8$$$ равно $$$3$$$. | |
| ! | Участник определил возможную матрицу $$$b$$$. | |
| 9 1 3 | ||
| 4 2 7 | ||
| 8 5 6 |