Universal Cup Judging System

Universal Cup

Time Limit: 4 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Hackable ✓
Statistics

Маленька Блакитна Рибка має перестановку $p_1, p_2, \ldots, p_n$ цілих чисел від $1$ до $n$ і, як випливає з назви задачі, хоче відсортувати її за зростанням. Цього разу операція, яку вона може виконувати, є такою.

  • За одну операцію Маленька Блакитна Рибка може вибрати два цілі числа $i$ та $j$, такі що $1 \le i < j \le n$, і поміняти місцями $p_i$ та $p_j$.

Але, погодьтеся, кожен вміє сортувати перестановку простими обмінами, тож очевидно, що задача вимагає від вас не цього. Натомість Маленька Блакитна Рибка визначає відстань операції як $j - i$. Для послідовності операцій, що сортує перестановку, позначимо через $a_d$ кількість операцій з відстанню $d$ для кожного $1 \le d < n$.

Серед усіх скінченних послідовностей операцій, що сортують перестановку, Маленька Блакитна Рибка хоче, щоб ви знайшли лексикографічно найменшу послідовність $(a_1, a_2, \ldots, a_{n-1})$ і побудували послідовність із щонайбільше $5n$ операцій, яка її досягає.

Вхідні дані

Тест складається з кількох наборів вхідних даних. Перший рядок вхідних даних містить одне ціле число $T$ ($1 \le T \le 10^6$), що позначає кількість наборів вхідних даних.

Для кожного набору вхідних даних перший рядок містить одне ціле число $n$ ($2 \le n \le 10^6$), що позначає довжину перестановки. Другий рядок містить $n$ цілих чисел $p_1, p_2, \ldots, p_n$ ($1 \le p_i \le n$), що задають перестановку. Гарантується, що $p$ є перестановкою довжини $n$.

Гарантується, що сума $n$ за всіма наборами вхідних даних не перевищує $10^6$.

Вихідні дані

Для кожного набору вхідних даних виведіть відповідь у наведеному нижче форматі.

Перший рядок для кожного набору вхідних даних повинен містити $n - 1$ цілих чисел $a_1, a_2, \ldots, a_{n-1}$ — лексикографічно найменшу послідовність.

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

Кожен із наступних $k$ рядків повинен містити два цілі числа $i$ та $j$ ($1 \le i < j \le n$) — індекси, вибрані у відповідній операції. Операції, виконані в заданому порядку, повинні відсортувати вхідну перестановку, і для кожного $1 \le d < n$ рівно $a_d$ операцій повинні мати відстань $d$.

Можна показати, що оптимальна послідовність із щонайбільше $5n$ операцій завжди існує. Якщо існує кілька коректних послідовностей операцій, ви можете вивести будь-яку з них.

Приклади

Вхідні дані 1

3
3
3 2 1
4
2 1 3 4
4
1 3 2 4

Вихідні дані 1

0 1
1
1 3
0 1 2
3
1 4
2 4
1 4
0 3 2
5
1 3
1 4
2 4
1 4
1 3

Примітка

У першому прикладі Маленька Блакитна Рибка міняє місцями позиції $1$ і $3$. Це сортує перестановку за одну операцію з відстанню $2$.

У другому прикладі однією з оптимальних послідовностей є $(1, 4)$, $(2, 4)$, $(1, 4)$. Відстані дорівнюють $3$, $2$ та $3$, тому отримана послідовність дорівнює $(0, 1, 2)$.

У третьому прикладі однією з оптимальних послідовностей є $(2, 4)$, $(1, 4)$, $(1, 3)$, $(1, 4)$, $(2, 4)$. Кількості операцій за відстанями дорівнюють $(0, 3, 2)$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.