配点 : 600 点
問題文
非負整数 K に対し、以下のようにレベル K のフラクタルを定義します。
- レベル 0 のフラクタルとは、白いマス一個のみからなるグリッドである。
- K>0 のとき、レベル K のフラクタルは 3K×3K のグリッドである。このグリッドを 3K−1×3K−1 のブロック 9 個に分割したとき、- 中央のブロックは全て黒マスからなる。
- 他の 8 個のブロックは、レベル K−1 のフラクタルになっている。
- 中央のブロックは全て黒マスからなる。
- 他の 8 個のブロックは、レベル K−1 のフラクタルになっている。
たとえば、レベル 2 のフラクタルは下図の通りです。
レベル 30 のフラクタルにおいて、上から r 番目、左から c 番目のマスを (r,c) と書きます。
Q 個の整数組 (ai,bi,ci,di) が与えられます。
それぞれの組について、(ai,bi) から (ci,di) への距離を求めてください。
ただし、(a,b) から (c,d) への距離とは、以下の条件を満たすような最小の n とします。
- ある白マスの列 (x0,y0),…,(xn,yn) が存在して、以下の条件を満たす。- (x0,y0)=(a,b)
- (xn,yn)=(c,d)
- 任意の i(0≤i≤n−1) に対し、マス (xi,yi) と (xi+1,yi+1) は辺で接する。
- (x0,y0)=(a,b)
- (xn,yn)=(c,d)
- 任意の i(0≤i≤n−1) に対し、マス (xi,yi) と (xi+1,yi+1) は辺で接する。
制約
- 1≤Q≤10000
- 1≤ai,bi,ci,di≤330
- (ai,bi)=(ci,di)
- (ai,bi),(ci,di) は白マスである。
- 入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
Q
a1 b1 c1 d1
:
aQ bQ cQ dQ
出力
Q 行出力せよ。
i 行目には、(ai,bi) から (ci,di) への距離を出力せよ。
2
4 2 7 4
9 9 1 9
5
8