E. Верифицируем Королевство
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Жюри загадало полное корневое бинарное дерево с n листьями. Полное бинарное дерево — такое дерево, каждая вершина которого имеет либо 0, либо 2 ребенка. Вершины с 0 детьми называются листьями. Так как дерево полное бинарное, то всего в нем 2n - 1 вершина. Листья загаданного дерева имеют индексы от 1 до n. Вы хотите построить дерево, изоморфное дереву жюри. Чтобы это сделать, вы можете спрашивать некоторые вопросы.

Вопрос состоит из трех различных листьев a1, a2, a3. Пусть глубина вершины равна кратчайшему расстоянию от вершины до корня дерева. Пусть LCA(a, b) означает вершину с максимальной глубиной такую, что эта вершина является общим предком вершин a и b.

Пусть X = LCA(a1, a2), Y = LCA(a2, a3), Z = LCA(a3, a1). Жюри ответит вам, какая из вершин X, Y, Z имеет наибольшую глубину. Заметьте, что ответ определен однозначно, так как дерево бинарное.

Формально, если наибольшую глубину имеет X (или Y, Z соответственно), жюри ответит строкой «X» (или «Y», «Z» соответственно).

Вы можете задать не более 10·n вопросов.

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

Первая строка ввода содержит одно целое число n (3 ≤ n ≤ 1 000) — число листьев в дереве.

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

Чтобы вывести угаданное дерево, выведите число «-1» на отдельной строке. Следующая строка должна содержать 2n - 1 целых чисел. i-е из этих чисел должно равняться индексу родителя i-й вершины, или -1, если это корень.

Ваш ответ будет считаться правильным, если ваше дерево изоморфно загаданному. В частности, листья не обязаны быть пронумерованы от 1 до n. Изоморфность означает, что существует такая перестановка π, что вершина i является родителем вершины j в загаданном дереве если и только если вершина π(i) является родителем вершины π(j) в вашем дереве.

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

Чтобы задать вопросы, выведите три различных целых числа a1, a2, a3. Эти числа должны быть от 1 до n включительно.

Программа жюри ответит единственным символом: «X», «Y» или «Z».

Если ответ равен «X» (или «Y», «Z», соответственно), то пара (a1, a2) (или (a2, a3), (a3, a1), соответственно) имеет наиболее глубокий LCA среди всех трех пар.

Вы можете задать не более 10·n вопросов, иначе вы получите вердикт Неправильный ответ.

Когда вы будете готовы вывести ответ, выведите число «-1» на отдельной строке. Следующая строка должна содержать 2n - 1 целых чисел. i-е из этих чисел должно равняться индексу родителя i-й вершины, или -1, если это корень. Не забудьте сделать операцию flush после вывода ответа тоже. Вывод ответа не учитывается при подсчете количества вопросов.

Вы получите вердикт Неправильный ответ, если

  • Ваш вопрос или ответ не соответствует формату, описанному в условии.
  • Вы спросили строго больше 10·n вопросов.
  • Ваш вопрос содержит повторяющиеся индексы.
  • Ваше дерево не изоморфно дереву жюри.

Вы получите вердикт Решение «зависло», если не будете ничего выводить, или забудете сделать операцию flush после вывода вопроса или ответа (смотрите ниже информацию, как сделать flush).

Чтобы выполнить операцию flush, можете использовать (сразу после вывода чисел и перевода строки):

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

Если в любой момент ваша программа считывает -1 как ответ, она должна немедленно нормально завершиться (например, вызовом exit(0)). Вы получите вердикт Неправильный ответ, и это будет означать, что вы задали больше вопросов, чем разрешено, или сделали некорректный вопрос. Если вы проигнорируете это, то можете получить любой вердикт, так как ваша программа продолжит читать из закрытого потока ввода.

Взломы Чтобы взломать кого-нибудь, используйте следующий формат.


n
p_1 p_2 ... p_{2n-1}

Это описывает дерево, где родителем вершины i является вершина pi (pi =  - 1 or n < pi ≤ 2n - 1). Значение pi, равное -1 означает, что вершина i является корнем. Эти данные должны описывать корректное полное бинарное дерево.

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

Пример
Входные данные
5
X
Z
Y
Y
X
Выходные данные
1 4 2
1 2 4
2 4 1
2 3 5
2 4 3
-1
-1 1 1 2 2 3 3 6 6
Примечание

В первом примере загаданное дерево выглядит так:

Взаимодействие в более удобном формате:

Последняя строка также может быть равной 8 6 9 8 9 7 -1 6 7.