eolymp
bolt
Try our new interface for solving problems
Problems

Врятуйте команди

Врятуйте команди

В олiмпiадi бере участь 2n команд з n рiзних унiверситетiв, з кожного унiверситету рiвно двi команди. Усi команди сидять за довгим столом у ряд. Сем визначив початкове розмiщення команд.

Як вiдомо, Юра дуже любить дисквалiфiковувати команди. Вiн вважає, що команду слiд дисквалiфiкувати, якщо поруч з нею сидить команда з того ж унiверситету. Команди ж хочуть зберегти свої шанси на перемогу. Щоб бути непомiченими Семом, за одну хвилину тiльки двi команди (необов’язково сусiднi) можуть помiнятись мiсцями. Допоможiть командам за мiнiмальну кiлькiсть хвилин досягти такого стану, коли Юра не зможе дисквалiфiкувати жодну команду, тобто коли жоднi двi команди з одного унiверситету не сидять поруч. Можна довести, що при таких обмеженнях це завжди можливо зробити.

Формат вхiдних даних:

Перший рядок мiстить одне цiле число n (2n105) — кiлькiсть унiверситетiв.

Другий рядок мiстить 2n цiлих чисел p1; p2; : : : ; p2n (1pin) — унiверситет команди, яка сидить на i-му мiсцi. Гарантується, що в кожного унiверситету рiвно двi команди.

Формат вихiдних даних:

У першому рядку виведiть k — мiнiмальну кiлькiсть хвилин, за яку команди зможуть досягти бажаного результату.

У кожному з наступних k рядках виведiть по два цiлi числа ai та bi (1ai; bi2n) — позицiї команд, якi мiняються мiсцями в i-ту хвилину.

Якщо iснує кiлька можливих вiдповiдей — виведiть будь-яку з них.

Time limit 1 second
Memory limit 128 MiB
Input example #1
4
1 2 2 4 1 3 3 4
Output example #1
1
3 6
Input example #2
2
1 2 1 2
Output example #2
0