#abc255f. [abc255_f]Pre-order and In-order

[abc255_f]Pre-order and In-order

問題文

1,2,ldots,N1, 2, \\ldots, N と番号づけられた NN 個の頂点を持つ二分木を考えます。 ここで、二分木とは各頂点が高々 22 個の子を持つ根付き木です。より具体的には、二分木の各頂点は高々 11 個の左の子と高々 11 個の右の子を持ちます。

頂点 11 を根とする二分木であって、下記の条件を満たすものが存在するかを判定し、存在する場合はその一例を示してください。

  • すべての頂点を深さ優先探索における行きがけ順(pre-order)で並べた列が (P1,P2,ldots,PN)(P_1, P_2, \\ldots, P_N) である。
  • すべての頂点を深さ優先探索における通りがけ順(in-order)で並べた列が (I1,I2,ldots,IN)(I_1, I_2, \\ldots, I_N) である。

制約

  • 2leqNleq2times1052 \\leq N \\leq 2 \\times 10^5
  • NN は整数
  • (P1,P2,ldots,PN)(P_1, P_2, \\ldots, P_N)(1,2,ldots,N)(1, 2, \\ldots, N) の順列
  • (I1,I2,ldots,IN)(I_1, I_2, \\ldots, I_N)(1,2,ldots,N)(1, 2, \\ldots, N) の順列

入力

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

NN P1P_1 P2P_2 ldots\\ldots PNP_N I1I_1 I2I_2 ldots\\ldots INI_N

出力

問題文中の条件を満たすような頂点 11 を根とする二分木が存在しない場合は \-1\-1 を出力せよ。
存在する場合は、条件を満たす二分木の一例を下記の形式にしたがって NN 行にわたって出力せよ。 すなわち、i=1,2,ldots,Ni = 1, 2, \\ldots, N について、ii 行目には頂点 ii の左の子の番号 LiL_i と右の子の番号 RiR_i を出力せよ。 ただし、左の子(または右の子)を持たない場合は LiL_i(または RiR_i )として 00 を出力せよ。
条件を満たすような頂点 11 を根とする二分木が複数存在する場合は、そのうちどれを出力しても正解となる。

L1L_1 R1R_1 L2L_2 R2R_2 vdots\\vdots LNL_N RNR_N


入力例 1

6
1 3 5 6 4 2
3 5 1 4 6 2

出力例 1

3 6
0 0
0 5
0 0
0 0
4 2

次の画像に示す、頂点 11 を根とする二分木が問題文中の条件を満たします。


入力例 2

2
2 1
1 2

出力例 2

-1

問題文中の条件を満たすような頂点 11 を根とする二分木は存在しません。よって \-1\-1 を出力します。