수열과 수열

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

요약
짝수 길이 구간 안에서 인접한 두 값을 통째로 맞바꾸는 연산만으로 수열 A를 순열 B로 바꿀 수 있는지 판정하고, 10^6번 이하의 구체적인 연산 순서를 출력한다.
난이도

보통10점 중 7점

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

문제

길이가 NN인 두 정수 수열 A ⁣:A_1,A_2,⋯ ,A_NA\colon A\_1, A\_2, \cdots, A\_N과 B ⁣:B_1,B_2,⋯ ,B_NB\colon B\_1, B\_2, \cdots, B\_N이 주어진다. 각 수열은 서로 다른 NN개의 수로 이루어져 있고 1≤A_i,B_i≤N1 \leq A\_i, B\_i \leq N (1≤i≤N1 \leq i \leq N)이다. 이때, 여러분은 AA에 다음과 같은 연산을 가할 수 있다.

  • 1≤l<r≤N1 \leq l < r \leq N이고 r−lr-l이 홀수인 양의 정수 ll과 rr을 임의로 선택한다.
  • A_lA\_l과 A_l+1A\_{l+1}의 값을 바꾼다.
  • A_l+2A\_{l+2}와 A_l+3A\_{l+3}의 값을 바꾼다.
  • ⋯\cdots
  • A_r−1A\_{r-1}과 A_rA\_r의 값을 바꾼다.

여러분은 AA에 연산을 몇 번 가해 BB와 같아지도록 만들고자 한다. 연산의 횟수를 최소화할 필요는 없으나, 물론 연산을 한 번도 가하지 않을 수도 있다. 이때, AA에 몇 번의 연산을 통해 BB와 같도록 할 수 있다면 10610^6번 이하의 연산만으로 AA를 BB와 같도록 할 수 있음을 증명할 수 있다. 10610^6번 이하의 연산을 통해 AA를 BB와 같도록 만들어보자.

입력

첫 번째 줄에 양의 정수 NN이 주어진다.

두 번째 줄에 AA를 이루는 NN개의 양의 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다.

세 번째 줄에 BB를 이루는 NN개의 양의 정수 B_1,B_2,⋯ ,B_NB\_1, B\_2, \cdots, B\_N이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 가해야 하는 연산의 횟수 QQ를 출력하라. 만약 AA를 BB로 바꿀 수 없다면 -1을 출력하여라.

만약 AA를 BB로 바꿀 수 있다면, 두 번째 줄부터 QQ개의 줄 중 ii번째 줄에, 수열 AA를 BB로 바꾸는 과정의 ii번째 연산에서 선택하는 두 수 ll과 rr을 공백으로 구분하여 출력하여라.

제한

  • 1≤N≤200,0001 \leq N \leq 200\\,000

예제2

  1. 예제 1

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

    입력
    2
    1 2
    1 2
    
    예상 출력
    2
    1 2
    1 2