Сортування#7770

Сортування

1 секунда
128 мегабайтів
Дуже легка

У Айжан є послідовність із цілих чисел S_0, S_1, ..., S_{n-1}. Ця послідовність складається з різних чисел від до n - 1. Айжан намагається відсортувати її за зростанням, міняючи місцями деякі пари елементів. Її друг Єрмек також збирається виконувати обміни елементів, однак немає гарантії, що його дії будуть корисними.

Єрмек і Айжан змінюють послідовність поетапно. На кожному етапі спочатку Єрмек виконує обмін, потім Айжан виконує свій обмін. Точніше, учасник, який виконує обмін, вибирає дві допустимі позиції і міняє місцями елементи в цих позиціях. Зауважимо, що вибрані позиції не обов'язково мають бути різними. Якщо вони збігаються, елемент міняється сам із собою, і послідовність залишається незмінною.

Айжан знає, що Єрмек не прагне відсортувати послідовність , і їй заздалегідь відомі позиції, які він буде вибирати. Єрмек планує виконати етапів. Етапи нумеруються від до m - 1. Для кожного від до m - 1 включно Єрмек вибирає позиції x_i та y_i на етапі з номером .

Айжан хоче відсортувати послідовність . Перед початком кожного етапу, якщо послідовність вже відсортована за зростанням, процес негайно припиняється. Дано початкову послідовність і позиції, які буде вибирати Єрмек. Потрібно знайти послідовність обмінів, яку може використовувати Айжан, щоб відсортувати . У деяких підзадачах необхідно знайти якомога коротшу послідовність обмінів. Гарантується, що послідовність можна відсортувати за або меншу кількість етапів.

Якщо після обміну Єрмека послідовність вже відсортована, Айжан може вибрати обмін однакових позицій (наприклад, і ). Тоді послідовність залишиться відсортованою до кінця етапу, і мету буде досягнуто. Також зауважимо, що якщо послідовність спочатку відсортована, то мінімальна кількість етапів дорівнює .

Дано послідовність , кількість етапів і послідовності позицій та . Знайдіть послідовність обмінів, яку Айжан може використовувати для сортування послідовності .

Вхідні дані

Перший рядок містить довжину послідовності .

Другий рядок містить початкову послідовність S_0, S_1, ..., S_{n-1}~(n \le 200000).

Наступний рядок містить кількість етапів m~(m \le 3 \cdot n), запланованих Єрмеком.

Кожен із наступних рядків містить пару чисел x_i та y_i. Вони означають, що на етапі (0 \le i \le m - 1) Єрмек планує поміняти елементи в позиціях x_i та y_i.

Вихідні дані

У першому рядку виведіть кількість обмінів , виконаних Айжан.

У наступних рядках виведіть послідовність обмінів мінімальної довжини, яку Айжан може використовувати для сортування .

У кожному рядку слід вивести пару позицій p_i та q_i для обміну.

Приклади

Приклад 1. Припустимо, що:

  • Початкова послідовність: S = 4, 3, 2, 1, 0.

  • Єрмек збирається виконати шість обмінів (m = 6).

  • Послідовності та , що задають позиції, які буде вибирати Єрмек: X = 0, 1, 2, 3, 0, 1 і Y = 1, 2, 3, 4, 1, 2. Тобто пари позицій: (0, 1), (1, 2), (2, 3), (3, 4), (0, 1) і .

У цьому випадку Айжан може перетворити послідовність на 0, 1, 2, 3, 4 за три етапи. Наприклад, вибравши пари (0, 4), (1, 3) і потім . Наступна таблиця показує, як Єрмек і Айжан змінюють послідовність .

Приклад 2. Припустимо, що:

  • Початкова послідовність: S = 3, 0, 4, 2, 1.

  • Єрмек збирається виконати п'ять обмінів (m = 5).

  • Пари позицій, які буде вибирати Єрмек: (1, 1), (4, 0), (2, 3), (1, 4) і .

У цьому випадку Айжан може відсортувати послідовність за три етапи, наприклад, вибравши пари (1, 4), (4, 2) і потім . Наступна таблиця показує, як Єрмек і Айжан змінюють послідовність .

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading