Алгоритм професора Іванова#5616

Алгоритм професора Іванова

1 секунда
64 мегабайти
Дуже легка

Професор Іванов розповів професору Петрову про новий алгоритм сортування, який базується на наступній функції .

\textbf{for } j := 0 \textbf{ to } n - 1 \textbf{ do}
\ \ \textbf{if } p_j = a \textbf{ then}
\ \ \ \ k := j
\textbf{swap}(k, (k + p_k) \bmod n);

Функція \textbf{swap}(i, j) міняє місцями елементи p_i та p_j.

Професор Іванов стверджує, що будь-яку перестановку p_0, \ldots, p_{n-1} цілих чисел від до можна впорядкувати за зростанням за допомогою декількох викликів функції . Потрібно лише для кожного виклику функції правильно вибрати аргумент в межах від до .

Професор Петров довіряє колезі, проте він не до кінця зрозумів алгоритм. Тому він запропонував перестановку p_0, \ldots, p_{n-1} і попросив професора Іванова відсортувати її за зростанням за допомогою функції .

Вхідні дані

У першому рядку задано ціле число (1 \leq n \leq 500).

У другому рядку наведено перестановку p_0, \ldots, p_{n-1} цілих чисел від до , запропоновану професором Петровим.

Вихідні дані

Якщо професор Іванов не зможе за допомогою функції відсортувати перестановку, виведіть "Impossible".

У іншому випадку у першому рядку виведіть число (0 \leq m \leq 10^6) — кількість викликів функції.

У наступних рядках виведіть аргумент (1 \leq a \leq n), який слід використати для кожного виклику.

Гарантується, що якщо перестановку можна відсортувати, це буде можливо не більше ніж за 10^6 викликів функції.

Приклади

Приклад 1

Loading
Loading