Комутуючі функції#2260

Комутуючі функції

3 секунди
256 мегабайтів
Дуже легка

Дві функції та (\mathbf{f}, \mathbf{g}: \mathbf{X} \rightarrow \mathbf{X}) називаються комутуючими, якщо і тільки якщо для кожного виконується рівність \mathbf{f}(\mathbf{g}(x)) = \mathbf{g}(\mathbf{f}(x)). Наприклад, функції \mathbf{f}(x) = x+1 та \mathbf{g}(x) = x-2 є комутуючими, а функції \mathbf{f}(x) = x+1 та \mathbf{g}(x) = 2x не є комутуючими.

Кожна функція (\mathbf{h}: N_n \rightarrow N_n, де N_n = \{1, 2, \ldots, n\} і — додатне ціле число) може бути представлена у вигляді списку значень — списку, у якому -й елемент дорівнює . Наприклад, функція \mathbf{h}(x) = \lfloor x/2 \rfloor з N_5 у N_5 має список значень [1, 1, 2, 2, 3].

Списки значень порівнюються лексикографічно: список [a_1, \ldots, a_n] менший за список [b_1, \ldots, b_n], якщо і тільки якщо існує індекс , такий що a_k < b_k, і для всіх l < k виконується a_l = b_l.

Функція (\mathbf{f}: X \rightarrow X) називається бієктивною, якщо для кожного з існує рівно один з , такий що \mathbf{f}(x) = y.

Задано бієктивну функцію (\mathbf{f}: N_n \rightarrow N_n, де — додатне ціле число). Знайдіть таку функцію , що комутує з та має лексикографічно найменший можливий список значень.

Вхідні дані

У першому рядку задано одне ціле число — кількість елементів у списку значень бієктивної функції (1 \leq n \leq 200\,000).

У другому рядку наведено список значень функції .

Вихідні дані

Виведіть в одному рядку цілих чисел — список значень функції , яка комутує з і має лексикографічно найменший можливий список значень.

Приклади

Приклад 1

Loading
Loading