I - Multiple Swap Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

長さ N-1 の正整数 A=(A_2,A_3,\ldots,A_N),B=(B_2,B_3,\ldots,B_N) が与えられます。(添字が 2 から始まることに注意してください)

数列 A に対して以下の操作を 10^6 回以下行って A=B にする方法があるか判定し、あるならば 1 つ構築してください。

  • 整数 i\ (2 \le i) とその倍数 j を選び、A_i の値と A_j の値を交換する。なお、このとき i=j であってもよい。

制約

  • 2 \le N \le 50000
  • 1 \le A_i,B_i \le 50000\ (2 \le i \le N)
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

N
A_2 A_3 \ldots A_N
B_2 B_3 \ldots B_N

出力

A=B とする方法が存在するならば、以下の形式で出力せよ。

M
I_1 J_1
I_2 J_2
\vdots
I_M J_M

ここで、 M\ (0 \le M \le 10^6) は操作回数を表し、 I_k,J_kk\ (1 \le k \le M) 回目の操作で選ぶ i,j を表す。

A=B とする方法が存在しないならば、 -1 と出力せよ。


入力例 1

4
3 2 4
4 2 3

出力例 1

1
2 4

入力例 2

2
3
4

出力例 2

-1

入力例 3

6
4 1 3 2 5
1 5 4 2 3

出力例 3

3
3 6
2 4
2 6

原案: turtle0123__