Запити краси перестановки#11732

Запити краси перестановки

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

У задачі масиви нумеруються з .

Перестановка довжини — це масив додатних цілих чисел, де кожен елемент з'являється рівно один раз, і кожне число від до n - 1 присутнє. Наприклад, , [0, 2, 1], [0, 3, 1, 2] є перестановками, тоді як [0, 1, 3], , [0, 1, 0] — ні.

Ми визначаємо множину досяжних перетворень перестановки відносно множини як множину перестановок, які можна отримати з , застосовуючи наступну операцію будь-яку кількість разів (можливо, ):

Тут позначає бітову операцію XOR.

Множина називається доброю відносно перестановки , якщо множина досяжних перетворень перестановки містить тотожну перестановку.

Ми називаємо перестановку довжини тотожною перестановкою, якщо для всіх (0 \le i \le m - 1) виконується a_i = i.

Краса перестановки визначається як мінімальний розмір доброї множини відносно неї.

Вам дана перестановка довжини . Вам потрібно вивести початкову красу перестановки. Вам також дано запитів. Кожен запит складається з двох чисел . Після кожного запиту вам потрібно поміняти місцями елементи на позиціях та . Зверніть увагу, що перестановка зберігає зміни після кожного запиту. У відповідь на кожен запит вам потрібно вивести красу отриманої перестановки.

Вхідні дані

Перший рядок містить два числа (1 \le n \le 5 \cdot 10^5) та (0 \le \beta \le 1).

Другий рядок містить чисел p_i (0 \le p_i < n) — початкова перестановка.

Третій рядок містить одне число (0 \le q \le 5 \cdot 10^5) — кількість запитів.

У наступних рядках наводяться два числа a_i', b_i' (0 \le a_i', b_i' \le n - 1) — параметри -го запиту.

Значення -го запиту визначаються наступним чином. Нехай — це відповідь на попередній запит або краса початкової перестановки, якщо це перший запит. Тоді:

a_i = (a_i' + last \cdot \beta) \bmod n,\quad b_i = (b_i' + last \cdot \beta) \bmod n

Вихідні дані

У першому рядку виведіть красу початкової перестановки.

У наступних рядках виведіть відповіді на запити.

Приклади

Приклад

Loading
Loading

Примітка

Після другого запиту перестановка стає [5, 2, 1, 3, 4, 0, 6].

Нехай S = \{3, 6\}. Використовуючи цю множину, ми можемо виконати наступні обміни, щоб перетворити перестановку в тотожну перестановку:

  1. Поміняйте місцями i = 0 та j = 3. Перестановка стає [\textbf{3}, 2, 1, \textbf{5}, 4, 0, 6].

  2. Поміняйте місцями i = 3 та j = 5. Перестановка стає [3, 2, 1, \textbf{0}, 4, \textbf{5}, 6].

  3. Поміняйте місцями i = 1 та j = 2. Перестановка стає [3, \textbf{1}, \textbf{2}, 0, 4, 5, 6].

  4. Поміняйте місцями i = 0 та j = 3. Перестановка стає [\textbf{0}, 1, 2, \textbf{3}, 4, 5, 6].

Можна довести, що неможливо отримати тотожну перестановку, виконуючи операції з |S| \le 1.

Оцінювання

  1. ( балів): n \le 8, \beta = 0;

  2. ( балів): n \le 32, q = 0, \beta = 0;

  3. ( балів): гарантовано, що відповідь не перевищує , \beta = 0;

  4. ( балів): n \cdot q \le 9 \cdot 10^6, \beta = 0;

  5. ( балів): q \le 10^4;

  6. ( балів): \beta = 0;

  7. ( балів): без додаткових обмежень.