Problems
Угадайте перестановку
Угадайте перестановку
Дана перестановка, которая состоит из $n$ ($n$ --- степень двойки) чисел. Порядок элементов в перестановке вам неизвестен.
Перестановка~--- это последовательность длины $n$ целых чисел от $1$ до $n$, в которой все числа встречаются ровно по одному разу. Например, $[1]$, $[4, 3, 5, 1, 2]$, $[3, 2, 1]$~--- перестановки, а $[1, 1]$, $[4, 3, 1]$, $[2, 3, 4]$~--- нет.
Также имеется следующий запрос: Вы даете массив $a$ длины $n$, такой что $1 \le a_i \le n$ (заметьте, что $a$ \textbf{не} обязательно является перестановкой). В ответ Вы получаете массив $c$ длины $n$, который генерируется следующим образом:
\begin{verbatim}
c = массив длины n из нулей
for i = 1 to n:
if p[a[i]] > p[i]:
c[a[i]] += 1
вернуть c
\end{verbatim}
Вам следует найти заданную перестановку $p$. Максимальное количество запросов смотрите в параграфе <<Оценивание>>.
\InputFile
Первая строка содержит два целых числа $t$ и $q$ ($1 \le t, q \le 256$)~--- количество наборов входных данных и максимальное количество запросов, которые можно использовать в каждом наборе входных данных.
\Interaction
Для каждого набора входных данных сначала следует прочитать целое число $n$ ($1 \le n \le 1024$) --- количество элементов в перестановке $p$.
Гарантируется, что $n$ является степенью двойки (то есть такое целое неотрицательное число $k$, что $2^k=n$).
Для совершения запроса выведите <<1 $a_1$ $a_2$ \dots $a_n$>> ($1 \le a_i \le n$).
В ответ на запрос программа жюри выведет массив $c$, полученный по правилу из условия, в следующем формате:
<<$c_1$ $c_2$ \dots $c_n$>>.
После вывода запроса не забудьте вывести символ новой строки и сбросить буфер вывода. В противном случае вы получите вердикт \t{Исчерпан лимит времени}. Для сброса буфера используйте:
\begin{itemize}
\item \t{fflush(stdout)} или \t{cout.flush()} в C++;
\item \t{System.out.flush()} в Java;
\item \t{flush(output)} в Pascal;
\item \t{stdout.flush()} в Python;
\end{itemize}
смотрите документацию для других языков.
Обратите внимание, что если ваш запрос недействителен (лимит запросов превышен или входной массив не устраивает ограничением), интерактор выведет <<-1>> и прекратит работу. Если вы считаете <<-1>>, то немедленно завершите программу, чтобы получить вердикт \t{Неверный ответ} вместо произвольного вердикта.
Когда вы найдете перестановку $p$, выведите <<2 $p_1$ $p_2$ \dots $p_n$>>.
После этого, если это был последний набор входных данных, Вы должны завершить работу своей программы, в противном случае Вы должны продолжить работу по следующим набором входных данных.
\Note
Из первого запроса узнали что $p_1<p_3<p_4<p_2$.
Таким образом искомая перестановка имеет вид: $[1, 4, 2, 3]$.
\Scoring
$q$ --- максимальное количество запросов, которое может использовать Ваша программа.
\begin{enumerate}
\item ($3$ балла) $n \le 16, q=256, t=128$
\item ($7$ баллов) $n \le 32, q=256, t=128$
\item ($8$ баллов) $n \le 256, q=256, t=128$
\item ($14$ баллов) $n \le 512, q=256, t=128$
\item ($20$ баллов) $n \le 512, q=128, t=256$
\item (до $48$ баллов) $n \le 1024, q=127, t=256$; Пусть $k$ --- максимальное количество запросов, которое Вы использовали в одном наборе данных. Тогда результат за этот тест будет равен:
\end{enumerate}
\begin{itemize}
\item $0$ баллов, если $k > 127$;
\item $48- \lceil \frac{24(k-55)}{37}\rceil $ баллов, если $55 < k \le 127$;
\item $48$ баллов, если $k \le 55$;
\end {itemize}
\Example
\begin{example}
\exmp{1 256
4
0 1 1 1}{
1 3 2 4 2
2 1 4 2 3}
\end{example}