問題文
長さ N の数列 S0 と T が与えられます。 ここで、N はある自然数 r に対して 2r と表せることが保証されます。
あなたは 0 回以上 500 回以内、操作を行うことができます。あなたの目的は操作回数を k として Sk と T を一致させることです。
i 回目の操作は以下のようにして行われます。
- 0leqx<i,0leqy<i を満たす整数 x,y、\-(N−1)leqfleqN−1 を満たす整数 f を指定する
- その後、
x
,y
のみからなる長さ N の文字列 s を指定する
- x,y,f,s を用いて長さ N の数列 Si を作る
- Si,j は sj が
x
ならば、Sx,j となる
- Si,j は sj が
y
ならば、Sy,j−f となる。ただし、1leqj−fleqN を満たさなくてはならない
目的が達成可能かどうか判定し、可能ならば、操作の一例を出力してください。不可能ならば代わりに -1
を出力してください。
操作についてはサンプル 1 も参照してください。
制約
- 2leqNleq8192
- 1leqS0,j,TjleqN
- N はある自然数 r に対して 2r と表せる
- 与えられる入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
S0,1 S0,2 ... S0,N
T1 T2 ... TN
出力
目的が達成不可能な場合は \-1 を出力せよ。
目的が達成可能な場合は以下の形式で操作を出力せよ。操作が問題文中の制約を満たし、SK が T と一致したならば正解となる。
K
x1 y1 f1 s1
:
xK yK fK sK
入力例 1
4
1 2 3 4
2 4 3 4
出力例 1
2
0 0 1 xxyx
0 1 -2 yyxx
- 1 回目の操作では x=0,y=0,f=1,s=
xxyx
を指定して操作を行います
- S1,1,S1,2,S1,4 はそれぞれ S0,1,S0,2,S0,4 に、S1,3 は S0,2 となります。よって S1=(1,2,2,4) となります
- 2 回目の操作では x=0,y=1,f=−2,s=
yyxx
を指定して操作を行います
- S2,3,S2,4 はそれぞれ S0,3,S0,4 となり、S2,1,S2,2 はそれぞれ S1,3,S1,4 となります。よって S2=(2,4,3,4) となります
- S2 と T が一致したため正解です
入力例 2
4
3 1 2 3
1 2 3 4
出力例 2
-1
- 目的が達成不可能な場合は
-1
を出力してください