\begin{problem}{Минимумы на дугах}{стандартный ввод}{стандартный вывод}{3 секунды}{1024 мегабайта}

\textbf{Данную задачу можно решать только на языке программирования C++.}

По кругу расположено $n$ различных чисел от $1$ до $n$, в $i$-й вершине при обходе против часовой стрелки записано число $p_i$. Для каждой пары значений $x$ и $y$ есть два способа добраться из $x$ в $y$~--- пойти по часовой стрелке или против. В этой задаче $n$ всегда нечетное, поэтому эти два пути будут иметь различную длину.

Скажем, что $f(x, y)$~--- это минимальное значение, которое мы встретим по пути, если добираться из числа $x$ в число $y$ по кратчайшему из путей.

Например, если $p = [1, 5, 3, 2, 7, 4, 6]$, то значения $5$ и $7$ соединены двумя путями, и значения вершин на этих путях, соответственно, равны $[5, 3, 2, 7]$ и $[5, 1, 6, 4, 7]$. Кратчайшим является первый указанный путь, а значит $f(5, 7) = \min \{ 5, 3, 2, 7 \} = 2$.

Скажем, что две перестановки $p$ и $q$~--- \textit{эквивалентные}, если значение функции $f$ для этих перестановок совпадает при всех $x$ и $y$. Вам загадана перестановка $p$, требуется отгадать любую эквивалентную ей перестановку $q$, задавая запросы к функции $f(x, y)$. 

\createsection{\Grader}{Формат решения}
\Grader

Это необычная задача. Она имеет формат тестирования с грейдером, где вам необходимо реализовать только функцию \t{guess} с решением. Эта функция будет вызвана тестирующей программой жюри (грейдером), и возвращаемое значение функции будет принято как решение задачи.

В частности, это означает, что в отправленном вами коде \textbf{не должно быть ввода или вывода}. Ваш код \textbf{не должен} содержать функцию \t{main}. При необходимости вы можете реализовать произвольное количество вспомогательных функций, структур, классов и глобальных переменных, но весь код вашего решения должен находиться в одном файле.

Вы должны реализовать следующую функцию:

\begin{verbatim}
std::vector<int> guess(int n);
\end{verbatim}

Функция \t{guess} принимает на вход число $n$~--- длину перестановки.

В реализации функции \t{guess} вы можете использовать функцию \t{min\_value}, которую реализует грейдер. Данная функция принимает на вход два значения $x$ и $y$, и возвращает $f(x, y)$ в качестве результата. Если сделать некорректный запрос или исчерпать количество запросов, то программа автоматически завершит свою работу.

Для того, чтобы получить доступ к функции \t{min\_value} в решении, первой строчкой вашего кода нужно подключить заголовочный файл следующей строчкой:

\begin{verbatim}
#include "checkpoint.h"
\end{verbatim}

Определение функции \t{min\_value} в заголовочном файле следующее:

\begin{verbatim}
int min_value(int x, int y);
\end{verbatim}

Все параметры (значения $x$, $y$, а так же возвращаемая вами перестановка $q$) заданы в \textbf{1-индексации}.

Ваша функция \t{guess} с помощью вызовов функции \t{min\_value} должна определить неизвестную перестановку $p$, с точностью до указанной эквивалентности. То есть если жюри загадали перестановку $p$, а функция \t{guess} вернула любую эквивалентную ей перестановку $q$, то такой ответ считается корректным.

За один запуск грейдера \textbf{жюри может делать несколько вызовов функции \t{guess}}, в таком случае функция \t{min\_value} будет возвращать значения $f(i, j)$, определенные для текущей загаданной перестановки $p$ в рамках конкретного вызова функции \t{guess}.

\textbf{Грейдер не является адаптивным}, то есть перестановки $p$ фиксируются заранее и не зависят от реализации функции \t{guess}.

\createsection{\Testing}{Тестирование}
\Testing

Вам предоставлен шаблон решения \texttt{checkpoint.cpp}, а так же заголовочный файл \texttt{checkpoint.h}, содержащий определение функций \t{min\_value} и \t{guess}.

Для удобства тестирования вам предоставлен грейдер~--- файл \texttt{grader.cpp}. В этом файле реализован ввод входных данных со стандартного потока ввода, запуск функции \t{guess} и вывод на стандартный поток вывода возвращаемого значения функции \t{guess}. В тестирующей системе эти файлы грейдеров могут отличаться. 

Чтобы скомпилировать ваш код \texttt{checkpoint.cpp} на языке C++, используйте команду \begin{verbatim}
g++ -std=c++20 grader.cpp checkpoint.cpp -o grader
\end{verbatim}

После выполнения данной команды будет создан исполняемый файл грейдера \texttt{grader} или \texttt{grader.exe}, в зависимости от вашей операционной системы, запустив который можно ввести тест в формате, указанном далее.

Если компиляция через команды вызывает у вас трудности, для локального тестирования вы можете скопировать реализацию функции \t{guess} в файл \t{grader.cpp} и запустить файл \t{grader.cpp}. При этом перед отправкой решения в тестирующую систему вам нужно будет оставить только реализацию функции \t{guess}, не забыв подключить заготовочный файл в начале кода.

\InputFile
Грейдер читает тест в следующем формате:

В первой строке указано число $t$ ($1 \le t \le 30\,000$)~--- количество наборов входных данных.

Первая строка каждого набора входных данных содержит \textbf{нечетное} число $n$ ($1 \le n \le 30\,000$)~--- длину перестановки.

Вторая строка содержит $n$ различных чисел $p_1, \ldots, p_n$ ($1 \le p_i \le n$)~--- загаданную перестановку.

\OutputFile
Грейдер выводит результаты функции \texttt{guess}~--- угаданную перестановку для каждого набора входных данных. 

В файле \t{grader.cpp} есть переменная \t{verbose}, которая исходно равна $0$. При увеличении ее значения грейдер будет более подробно писать информацию о вашем решении и его запросах.

\Example

\begin{example}
\exmpfile{example.01}{example.01.a}%
\end{example}

\Scoring
Тесты к этой задаче состоят из четырех групп.

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

Для каждого теста обозначим за $N$ сумму $n$ по всем наборам входных данных, за $Q$~--- ограничение на суммарное количество вызовов функции \t{min\_value} по всем наборам входных данных.

\begin{center}
\begingroup
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
& & \multicolumn{2}{c|}{Доп. ограничения} & & \\
\cline{3-4}
\raisebox{2.25ex}[0cm][0cm]{Группа}
& \raisebox{2.25ex}[0cm][0cm]{Баллы}
& $N$ & $Q$
& \raisebox{2.25ex}[0cm][0cm]{\parbox{2cm}{\centering Необх. группы}}
& \raisebox{2.25ex}[0cm][0cm]{Комментарий}
\\
\hline
0 & 0 & -- & $Q = 4950$ & -- & Тесты из условия \\
\hline
1 & 10 & $N \le 100$ & $Q = 4950$ & & $p_{2i-1} = \frac{n-1}{2} + i$ для $1 \le i \le \frac{n+1}{2}$ \\
\hline
2 & 20 & $N \le 100$ & $Q = 4950$ & 0, 1 & \\
\hline
3 & 20 & $N \le 1\,000$ & $Q = 100\,000$ & 0, 1, 2 & \\
\hline
4 & 60 & $N \le 30\,000$ & $Q = 1\,000\,000$ & -- &  \\
\hline
\end{tabular}
\endgroup
\end{center}

%\begin{itemize}
%\item \textbf{10 баллов.} $N = 100$, $Q = 4950$, гарантируется, что для всех $1 \le i \le \frac{n+1}{2}$ выполнено $p_{2i-1} = \frac{n-1}{2} + i$.
%\item \textbf{20 баллов.} $N = 100$, $Q = 4950$.
%\item \textbf{20 баллов.} $N = 1\,000$, $Q = 100\,000$.
%\item \textbf{60 баллов.} $N = 30\,000$, $Q = 1\,000\,000$.
%\end{itemize}

При этом последняя группа оценивается по формуле. Если в тесте вы сделали $x$ запросов, то ваш балл будет равен:

$$
\textrm{score} = \min \left( 60, \, \left \lfloor 95 \cdot \left( 1 - \frac{x}{10^6} \right) \right \rfloor \right)
$$

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


\end{problem}

