Коммутирующие функции
Две функции f и g (f, g: X → X) называются коммутирующими, если выполняется равенство f(g(x)) = g(f(x)) для каждого x из 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 и имеет лексикографически наименьший список значений.