Задачі
Вгадайте перестановку
Вгадайте перестановку
Дано перестановку, яка складається з $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$>>.
Після цього, якщо це був останній набір вхідних даних, ви повинні завершити роботу своєї програми, в іншому випадку ви повинні продовжити роботу з наступним набором вхідних даних.
\Example
\begin{example}
\exmp{1 256
4
0 1 1 1}{
1 3 2 4 2
2 1 4 2 3}
\end{example}
\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}