平面上の2つの円が互いに素(重なりも接しもしない)であるとき、それらには4本の異なる共通接線が存在することがよく知られています。
$xy$平面上の4本の直線が与えられます。これらの直線に対して平行移動を行い、正の半径を持つ互いに素な2つの円の4本の共通接線となるようにすることが目的です。このとき、移動距離の総和として定義されるコストを最小化したいと考えています。直線の移動距離とは、移動前後の直線間の距離のことです。
各直線は2つのパラメータ $a$ と $d$ によって指定され、次の方程式で定義されます。 $$x \cos\left(\frac{\pi a}{180}\right) + y \sin\left(\frac{\pi a}{180}\right) = d$$
例えば、$(a, d) = (60, 1)$ の直線は、$\cos(\pi/3) = 1/2$ および $\sin(\pi/3) = \sqrt{3}/2$ であるため、$x/2 + \sqrt{3}y/2 = 1$ を表します。
まず、この目的が達成可能かどうかを判定してください。達成可能な場合、最小の必要コストを求めてください。ここで最小の必要コストとは、任意の正の実数 $\varepsilon$ に対してコスト $c + \varepsilon$ 以下で目的が達成可能となるような最小の値 $c$ として定義されます。目的は、コストが正確に $c$ となる必要はありません。
入力
入力には1つ以上のテストケースが含まれます。入力の最初の行には、テストケースの数を示す整数 $t$ ($1 \le t \le 1000$) が含まれます。続いて $t$ 個のテストケースが以下の形式で記述されます。
$a_1 \ d_1$ $\vdots$ $a_4 \ d_4$
$i = 1, \dots, 4$ について、$a_i$ と $d_i$ は $i$ 番目の直線を指定する2つの整数です ($0 \le a_i < 180$, $-1000 \le d_i \le 1000$)。移動前には2本以上の直線が同一である場合もあります。
出力
各テストケースについて、目的が達成不可能な場合は no と出力してください。達成可能な場合は、前述の最小の必要コストを1行に出力してください。出力の絶対誤差または相対誤差は $10^{-7}$ 以下でなければなりません。
入出力例
入力 1
4 90 0 90 0 45 0 135 0 0 -200 0 100 30 0 150 0 120 100 120 75 30 50 30 -100 178 -132 144 -83 165 199 19 31
出力 1
0 86.602540378444 no 173.814220263386
注記
サンプル入力1の最初のテストケースでは、最初の2本の同一な直線のうち少なくとも一方を移動させる必要があります(図L.1 (a))。$\varepsilon > 0$ に対して、一方の直線を $y$ 軸正方向に $\varepsilon/2$、もう一方を $y$ 軸負方向に $\varepsilon/2$ だけ平行移動させると、コスト $\varepsilon$ で目的が達成されます。これは半径 $\varepsilon/2$ の円に対する4本の接線となります(図L.1 (b))。$\varepsilon$ は任意に小さくできるため、最小の必要コストは 0 です。残りのケースは図L.1 (c) から (e) に示されています。
図L.1. サンプル入力1の図解