AT_panasonic2020_f Fractal Shortest Path

Description

[problemUrl]: https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_f 非負整数 $ K $ に対し、以下のようにレベル $ K $ のフラクタルを定義します。 - レベル $ 0 $ のフラクタルとは、白いマス一個のみからなるグリッドである。 - $ K\ >\ 0 $ のとき、レベル $ K $ のフラクタルは $ 3^K\ \times\ 3^K $ のグリッドである。このグリッドを $ 3^{K-1}\ \times\ 3^{K-1} $ のブロック $ 9 $ 個に分割したとき、 - 中央のブロックは全て黒マスからなる。 - 他の $ 8 $ 個のブロックは、レベル $ K-1 $ のフラクタルになっている。 たとえば、レベル $ 2 $ のフラクタルは下図の通りです。 ![レベル 2 のフラクタル](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_panasonic2020_f/b750f0bcdb56d49489148f9973188d07d9333b40.png) レベル $ 30 $ のフラクタルにおいて、上から $ r $ 番目、左から $ c $ 番目のマスを $ (r,\ c) $ と書きます。 $ Q $ 個の整数組 $ (a_i,\ b_i,\ c_i,\ d_i) $ が与えられます。 それぞれの組について、$ (a_i,\ b_i) $ から $ (c_i,\ d_i) $ への距離を求めてください。 ただし、$ (a,\ b) $ から $ (c,\ d) $ への距離とは、以下の条件を満たすような最小の $ n $ とします。 - ある白マスの列 $ (x_0,\ y_0),\ \ldots,\ (x_n,\ y_n) $ が存在して、以下の条件を満たす。 - $ (x_0,\ y_0)\ =\ (a,\ b) $ - $ (x_n,\ y_n)\ =\ (c,\ d) $ - 任意の $ i\ (0\ \leq\ i\ \leq\ n-1) $ に対し、マス $ (x_i,\ y_i) $ と $ (x_{i+1},\ y_{i+1}) $ は辺で接する。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ Q $ $ a_1\ b_1\ c_1\ d_1 $ $ : $ $ a_Q\ b_Q\ c_Q\ d_Q $

Output Format

$ Q $ 行出力せよ。 $ i $ 行目には、$ (a_i,\ b_i) $ から $ (c_i,\ d_i) $ への距離を出力せよ。

Explanation/Hint

### 制約 - $ 1\ \leq\ Q\ \leq\ 10000 $ - $ 1\ \leq\ a_i,\ b_i,\ c_i,\ d_i\ \leq\ 3^{30} $ - $ (a_i,\ b_i)\ \neq\ (c_i,\ d_i) $ - $ (a_i,\ b_i),\ (c_i,\ d_i) $ は白マスである。 - 入力は全て整数である。 ### Sample Explanation 1 !\[\](https://img.atcoder.jp/panasonic2020/b590cee9850abdad4109ab940f9efe5a.png)