두 순열 (Easy)
시간 제한2초메모리 제한1024 MB
두 순열이 주어질 때, 각각 원하는 위치를 기준으로 좌우를 교환하는 시행을 반복해 두 순열을 모두 항등 순열로 만들 수 있는지 판별하고 10000회 이하의 시행을 출력한다.
문제
이 버전에서는 시행의 횟수를 최소화할 필요가 없다.
두 순열 과 이 있다. 초기에 (), ()이다. 당신은 아래 시행을 적절하게 하여 (), ()가 되도록 해야 한다.
한 번의 시행에서, 와 는 다음 세 단계에 따라 변한다:
- 당신은 , 을 만족하는 두 정수 , 를 선택한다.
- 에서 번째 원소를 기준으로 왼쪽 부분과 오른쪽 부분을 서로 교환한다. 즉, 를 로 바꾼다. 왼쪽 부분과 오른쪽 부분은 비어 있을 수도 있다. 새롭게 만들어진 에는 인덱스 번호가 다시 부여된다.
- 에서 번째 원소를 기준으로 왼쪽 부분과 오른쪽 부분을 서로 교환한다. 즉, 를 로 바꾼다. 왼쪽 부분과 오른쪽 부분은 비어 있을 수도 있다. 새롭게 만들어진 에는 인덱스 번호가 다시 부여된다.
목표를 달성하는 것이 가능한지 판별하고, 가능하다면 회 이하의 시행으로 목표를 달성하는 방법을 찾아라.
제한 조건 하에서 목표를 달성하는 것이 가능하다면 항상 회 이하의 시행으로 목표를 달성하는 것이 가능함을 증명할 수 있다.
입력
첫 번째 줄에 두 정수 과 이 주어진다().
두 번째 줄에 개의 정수 가 공백으로 구분되어 주어진다 ().
세 번째 줄에 개의 정수 가 공백으로 구분되어 주어진다 ().
와 가 순열임이 보장된다.
출력
목표를 달성하는 것이 불가능하다면, 첫 줄에 을 출력한다.
목표를 달성하는 것이 가능하다면, 첫 줄에 시행의 횟수 를 출력한다 ().
이후 개의 줄에 각 시행을 나타내는 두 정수 와 를 공백으로 구분하여 출력한다 (, ).
목표를 달성하는 방법이 둘 이상이라면 그 중 무엇을 출력해도 상관없다. 시행의 횟수를 최소화할 필요가 없음에 유의하라.
힌트
첫 번째 예제에서, 다음 방법으로 목표를 달성할 수 있다:
- 첫 번째 시행에서 , 를 선택한다. 시행 후 , 이 된다.
- 두 번째 시행에서 , 를 선택한다. 시행 후 , 가 된다.
세 번째 예제에서, 목표를 달성하는 것이 불가능함을 증명할 수 있다.