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

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

Ожерелье

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

요약
원형으로 배열된 N개의 서로 다른 고리 번호가 주어질 때, 이웃하지 않은 두 번호를 맞바꾸는 연산만으로 시계 방향으로 오름차순이 되도록 정렬하는 과정을 출력하거나 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
정렬, 그리디, 구현, 배열
정답자
아직 제출이 없습니다

문제

В витрине ювелирного магазина стоит манекен, на шею которого надето ожерелье. Оно состоит из N колечек, нанизанных на замкнутую нить. Все колечки имеют разные размеры. В зависимости от размера  колечки пронумерованы числами от 1 до N, начиная с самого маленького и до самого большого. Колечки можно передвигать вдоль нити и протаскивать  одно через другое, но только в том случае, если номера этих колечек отличаются более чем на единицу. 

Продавец хочет упорядочить колечки так, чтобы они располагались по возрастанию номеров вдоль нити по часовой стрелке. Снимать ожерелье с манекена нельзя.

Требуется написать программу, которая по заданному начальному расположению колечек находит последовательность протаскиваний колечек одно через другое, приводящую исходное расположение колечек в желаемое.

입력

В первой строке входного файла записано число N (2 ≤ N ≤ 50). 

Во второй строке через пробел следуют N различных чисел от 1 до N — номера колечек, расположенных вдоль нити по часовой стрелке.

출력

Выходной файл должен содержать описание процесса упорядочения.

В каждой строке, кроме последней, должны быть записаны через пробел два числа, указывающие номера колечек, протаскиваемых друг через друга. В последней строке должен стоять ноль.

Количество строк выходного файла не должно превышать 50000.

Если требуемого упорядочения колечек достичь не удается, в выходной файл нужно вывести одно число  –1.

예제1

  1. 예제 1

    입력
    4
    3 2 4 1
    
    예상 출력
    1 3
    2 4
    1 4
    0