아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Шоу фейерверков

시간 제한1초메모리 제한1024 MB

요약
각각 전하 두 개를 담은 로켓 n개와 빈 로켓 하나가 주어질 때, 전하를 한 번에 하나씩 옮겨 2n번 이내의 이동으로 모든 로켓이 같은 종류의 전하 두 개를 담도록 만든다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

На очередном осеннем фестивале планируется грандиозный фейерверк, во время которого должны запустить nn разноцветных ракет, каждая из которых взорвется в небе уникальным рисунком. Чтобы фейерверк получился максимально ярким, в каждую из nn ракет положили два заряда одинакового вида (один заряд лежит строго под другим, нельзя достать нижний, не достав сначала верхний).

Сегодня пиротехник решил проверить готовность ракет и с ужасом обнаружил, что какой-то шутник перемешал некоторые заряды местами --- теперь в некоторых ракетах находятся заряды разных видов, и при их запуске не получатся красивые узоры! Однако общий состав фейерверка не изменился --- во всех ракетах, вместе взятых, все еще по два заряда каждого из nn видов.

Теперь пиротехника ждет бессонная ночь, в течение которой он будет перекладывать заряды между ракетами, чтобы снова получить nn ракет, в каждой из которых по два заряда одного вида. Для этого в его распоряжении есть еще одна n+1n + 1-я ракета, в которой не лежит ни одного заряда. За одно действие пиротехник

  1. выбирает ракету номер ii, в которой есть хотя бы один заряд;
  2. выбирает ракету номер j≠ij \neq i, в которой строго меньше двух зарядов;
  3. перекладывает верхний заряд из ракеты ii наверх в ракету номер jj.

Поскольку пиротехник не хочет тратить на это слишком много времени, он просит вас помочь ему найти способ получить nn ракет с парами одинаковых зарядов за не более чем 2n2n таких действий.

입력

В первой строке дано целое число nn --- количество ракет, заготовленных для фейерверка (1⩽n⩽1051 \leqslant n \leqslant 10^5).

В ii-й из следующий nn строк дано описание текущего состояния ii-й ракеты: через пробел даны x_i_1x\_{i\_1} и x_i_2x\_{i\_2} --- номера нижнего и верхнего зарядов, находящихся в ней (1⩽x_i_1,x_i_2⩽n1 \leqslant x\_{i\_1}, x\_{i\_2} \leqslant n). Гарантируется, что каждое число от 11 до nn встречается ровно дважды в описаниях ракет. Ракета номер n+1n + 1 изначально пустая.

출력

В первой строке выводите целое число kk --- количество действий, которое понадобится пиротехнику (0⩽k⩽2n0 \leqslant k \leqslant 2n).

В следующих kk строках выведите описания действий в порядке их следования. Каждое действие описывается номерами ракет (от 11 до n+1n + 1), между которыми следует переложить верхний заряд. Нельзя класть в ракету более двух зарядов и нельзя перекладывать заряд из ракеты в нее же (зачем делать бесполезные действия?).

Обратите внимание, что от вас не требуется минимизировать количество действий --- достаточно просто добиться того, чтобы их было не больше 2n2n.

예제2

  1. 예제 1

    입력
    3
    2 1
    3 3
    1 2
    
    예상 출력
    3
    1 4
    3 1
    4 3
    
  2. 예제 2

    입력
    5
    1 5
    2 3
    3 5
    4 2
    1 4
    
    예상 출력
    6
    1 6
    3 6
    2 3
    4 2
    5 4
    5 1