B. Ищем напарника
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Есть соревнование по программированию под названием SnakeUp, в котором хотят принять участие 2n человек. Принять участие в контесте можно только в составе команды из ровно двух людей. Известна сила каждой возможной команды из двух людей. Все значения сил различны.

Каждый соревнующийся надеется, что он может найти напарника, с которым он образует как можно более сильную команду. Таким образом, соревнующийся стремится создать команду с наибольшей возможной силой, путем выбора сокомандника из тех, кто согласен быть с ним в команде. Более формально, два человека, A и B смогут создать команду, если каждый из них является наилучшим возможным напарником (среди соревнующихся, не нашедших к текущему моменту пару) друг для друга.

Определить, кто с кем будет участвовать в команде?

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

Ввод состоит из 2n строк.

В первой строке записано целое число n (1 ≤ n ≤ 400) — количество команд, которые надо образовать.

В i-й строке (i > 1) записано i - 1 чисел ai1, ai2, ... , ai(i - 1). Здесь aij (1 ≤ aij ≤ 106, все aij различны) обозначает силу команды, состоящей из человека i и человека j (люди пронумерованы, начиная с 1)

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

Выведите строку, содержащую 2n чисел. Из них i-е число должно обозначать номер напарника i-го человека.

Примеры
Входные данные
2
6
1 2
3 4 5
Выходные данные
2 1 4 3
Входные данные
3
487060
3831 161856
845957 794650 976977
83847 50566 691206 498447
698377 156232 59015 382455 626960
Выходные данные
6 5 4 3 2 1
Примечание

В первом примере люди номер 1 и 2 образуют команду, также образуют команду люди номер 3 и 4, так что напарники соревнующихся номер 1, 2, 3, 4 будут 2, 1, 4, 3, соответственно.