Ожерелье
시간 제한1초메모리 제한1024 MB
원형으로 배열된 N개의 서로 다른 고리 번호가 주어질 때, 이웃하지 않은 두 번호를 맞바꾸는 연산만으로 시계 방향으로 오름차순이 되도록 정렬하는 과정을 출력하거나 불가능하면 -1을 출력한다.
문제
В витрине ювелирного магазина стоит манекен, на шею которого надето ожерелье. Оно состоит из N колечек, нанизанных на замкнутую нить. Все колечки имеют разные размеры. В зависимости от размера колечки пронумерованы числами от 1 до N, начиная с самого маленького и до самого большого. Колечки можно передвигать вдоль нити и протаскивать одно через другое, но только в том случае, если номера этих колечек отличаются более чем на единицу.
Продавец хочет упорядочить колечки так, чтобы они располагались по возрастанию номеров вдоль нити по часовой стрелке. Снимать ожерелье с манекена нельзя.
Требуется написать программу, которая по заданному начальному расположению колечек находит последовательность протаскиваний колечек одно через другое, приводящую исходное расположение колечек в желаемое.
입력
В первой строке входного файла записано число N (2 ≤ N ≤ 50).
Во второй строке через пробел следуют N различных чисел от 1 до N — номера колечек, расположенных вдоль нити по часовой стрелке.
출력
Выходной файл должен содержать описание процесса упорядочения.
В каждой строке, кроме последней, должны быть записаны через пробел два числа, указывающие номера колечек, протаскиваемых друг через друга. В последней строке должен стоять ноль.
Количество строк выходного файла не должно превышать 50000.
Если требуемого упорядочения колечек достичь не удается, в выходной файл нужно вывести одно число –1.