你在 SLPC 航空公司工作,这是一家小型航空公司,最近在他们的飞行规划系统中发现了一个严重的错误。
该错误导致航班采取的路径要么保持纬度不变,要么保持经度不变。例如,要将飞机从 $(0, 0)$ 航行至 $(10, 10)$,飞行规划系统会先让飞机从 $(0, 0)$ 航行至 $(0, 10)$(保持纬度不变),然后再从 $(0, 10)$ 航行至 $(10, 10)$(保持经度不变)。
你想知道公司因为这个错误损失了多少。作为第一步,你拥有各个城市的经纬度坐标,并希望计算它们之间的最短飞行距离以及该错误飞行规划系统计算出的飞行距离。
假设地球是一个半径为 $6,371$ 公里的完美球体,且 SLPC 的飞机在地球表面上方忽略不计的高度飞行。
经纬度提示
地球表面某点的纬度是赤道平面与穿过地心和该点的直线之间的夹角。纬度范围从 $90^\circ\text{S}$(南极)到 $90^\circ\text{N}$(北极)。
地球表面某点的经度是包含本初子午线的平面与包含北极、该点及南极的平面之间的夹角(子午线是从北极到南极的大圆的一半;本初子午线是经度为 $0$ 的子午线)。经度范围从 $180^\circ\text{W}$ 到 $180^\circ\text{E}$。
输入格式
输入的第一行包含一个整数 $T$ ($1 \le T \le 10,000$),表示测试用例的数量。每个测试用例为一行,包含四个实数 $a_1, b_1, a_2, b_2$ ($|a_1|, |a_2| \le 90$ 且 $|b_1|, |b_2| \le 180$)。这些数字构成了以度为单位的经纬度坐标对 $(a_1, b_1)$ 和 $(a_2, b_2)$。正纬度坐标表示赤道以北的点,负数表示以南。正经度坐标表示本初子午线以东的点,负数表示以西。
输出格式
对于每个测试用例,输出一行,给出它们之间的最短飞行距离,随后是该错误飞行规划系统计算出的飞行距离。如果答案的绝对误差或相对误差不超过 $10^{-7}$,则被认为是正确的。
样例
输入格式 1
2 -90 0 90 0 0 0 10 10
输出格式 1
20015.08679602 20015.08679602 1568.52055680 2223.89853289
说明
在第一个样例中,错误的飞行规划系统恰好选择了两点之间的最佳路线;两个距离均为大圆距离的一半。
在第二个样例中,错误的飞行规划系统没有选择最佳路线,因此答案不同。