Зеник і марсіанська перестановка
Обмеження: 2 сек., 256 МіБ
Зеник отримав марсіанську перестановку p із чисел від 1 до n у подарунок від Ілони.
Число k називається добрим, якщо Зеник може посортувати отриману перестановку, виконавши довільну кількість разів таку операцію: вибрати i та поміняти місцями pi та pi+k.
Допоможіть Зенику визначити всі натуральні числа, які є добрими.
Вхідні дані
У першому рядку задано ціле число n — розмір перестановки.
У другому рядку задано n цілих чисел pi — перестановку.
Вихідні дані
У першому рядку виведіть ціле число m — кількість добрих чисел.
У другому рядку виведіть m цілих чисел — добрі числа в порядку зростання.
Обмеження
2≤n≤105,
1≤pi≤n,
існує такий індекс i, що pi≠i,
для 60% тестів виконується додаткове обмеження: n≤2000.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
3 3 2 1 | 2 1 2 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
7 7 5 3 6 2 4 1 | 1 1 |
Джерело: Шкільна олімпіада 2021