Комутуючі функції
Дві функції f та g (f, g: X → X) називаються комутуючими, якщо для кожного x з X виконується рівність f(g(x)) = g(f(x)). Наприклад, функції f(x) = x+1 та g(x) = x-2 комутують, тоді як функції f(x) = x+1 та g(x) = 2x не комутують.
Кожна функція h (h: N_n → N_n, де N_n = {1, 2, ..., n} і n — додатне ціле число) може бути представлена у вигляді списку значень — списку, в якому i-й елемент дорівнює h(i). Наприклад, функція h(x) = x/2 з N_5 в N_5 має список значень [1, 1, 2, 2, 3].
Списки значень упорядковуються лексикографічно: список [a_1 ... a_n] менший за список [b_1 ... b_n], якщо існує такий індекс k, що a_k < b_k, і a_l = b_l для всіх індексів l < k.
Функція f (f : X → X) називається бієктивною, якщо для кожного y з X існує рівно один x з X, такий що f(x) = y.
Дана бієктивна функція f (f: N_n → N_n, де n — додатне ціле число). Необхідно знайти функцію g, яка комутує з f і має лексикографічно найменший можливий список значень.
Вхідні дані
Перший рядок містить одне ціле число n — кількість елементів у списку значень бієктивної функції f (1 ≤ n ≤ 200000).
Другий рядок вхідного файлу містить список значень функції f.
Вихідні дані
Єдиний рядок вихідного файлу повинен містити n цілих чисел — список значень функції g, яка комутує з функцією f і має лексикографічно найменший список значень.