수열과 수열
시간 제한2초메모리 제한1024 MB
짝수 길이 구간 안에서 인접한 두 값을 통째로 맞바꾸는 연산만으로 수열 A를 순열 B로 바꿀 수 있는지 판정하고, 10^6번 이하의 구체적인 연산 순서를 출력한다.
문제
길이가 인 두 정수 수열 과 이 주어진다. 각 수열은 서로 다른 개의 수로 이루어져 있고 ()이다. 이때, 여러분은 에 다음과 같은 연산을 가할 수 있다.
- 이고 이 홀수인 양의 정수 과 을 임의로 선택한다.
- 과 의 값을 바꾼다.
- 와 의 값을 바꾼다.
- 과 의 값을 바꾼다.
여러분은 에 연산을 몇 번 가해 와 같아지도록 만들고자 한다. 연산의 횟수를 최소화할 필요는 없으나, 물론 연산을 한 번도 가하지 않을 수도 있다. 이때, 에 몇 번의 연산을 통해 와 같도록 할 수 있다면 번 이하의 연산만으로 를 와 같도록 할 수 있음을 증명할 수 있다. 번 이하의 연산을 통해 를 와 같도록 만들어보자.
입력
첫 번째 줄에 양의 정수 이 주어진다.
두 번째 줄에 를 이루는 개의 양의 정수 이 공백으로 구분되어 주어진다.
세 번째 줄에 를 이루는 개의 양의 정수 이 공백으로 구분되어 주어진다.
출력
첫 번째 줄에 가해야 하는 연산의 횟수 를 출력하라. 만약 를 로 바꿀 수 없다면 -1을 출력하여라.
만약 를 로 바꿀 수 있다면, 두 번째 줄부터 개의 줄 중 번째 줄에, 수열 를 로 바꾸는 과정의 번째 연산에서 선택하는 두 수 과 을 공백으로 구분하여 출력하여라.