商业航班在统计学上非常安全(就每乘客公里的死亡人数而言,只有去月球旅行更安全)。但出于预防和安全法规的考虑,仍有必要采取一些措施。早期的一项此类规则是所谓的“60分钟规则”,它要求双引擎飞机在整个飞行路径中,距离最近的合适机场的时间必须在60分钟以内。虽然存在各种类似的规则,但其核心思想是一样的:飞行路径不能使飞机距离最近机场超过一定的最大允许距离。由于这些限制,飞机并不总能使用从一个机场到另一个机场的直飞航线。
在本题中,我们将计算两个机场之间的最短飞行路径,同时遵守最大允许距离规则。在下图中,展示了第一个样例测试用例,任何飞行路线都必须保持在三个圆圈内。因此,从机场 2 飞往机场 3 的飞机必须绕道经过机场 1 周围的区域。注意,飞机不一定非要到达机场 1 本身。
飞机燃油供应有限,为了飞行更远的距离,它们可能需要在中途机场停留,这使得情况变得更加复杂。因此,根据燃油容量的不同,图中从机场 2 飞往机场 3 的飞机可能需要在机场 1 停留(或者燃油容量可能太低,甚至无法到达机场 1,在这种情况下,行程将无法完成)。
我们做出以下简化假设:
- 地球表面是一个半径为 $6370\text{ km}$ 的球体。
- 时间和燃油消耗都与飞行距离成正比。换句话说,我们只关心总飞行距离。
- 飞机在不同高度飞行所造成的距离差异可以忽略不计。因此,实际上我们假设它们沿着地球表面飞行。
- 飞机可以在需要时在任意多个中间机场停留加油,每次加油后油箱都会加满。
输入格式
每个测试用例的第一行包含两个整数 $N$ 和 $R$,其中 $2 \le N \le 25$ 是机场数量,$1 \le R \le 10\,000$ 是距离最近机场的最大允许飞行距离(单位:km)。接下来的 $N$ 行,每行包含两个整数 $\phi, \theta$,满足 $0 \le \phi < 360$ 和 $-90 \le \theta \le 90$,分别表示机场的经度和纬度(单位:度)。机场按照输入顺序从 1 开始编号。没有两个机场位于同一位置。
随后是一行,包含一个整数 $Q$,满足 $1 \le Q \le 100$。接下来的 $Q$ 行,每行包含三个整数 $s, t, c$,满足 $1 \le s, t \le N, s \neq t$ 以及 $1 \le c \le 50\,000$,表示一架从机场 $s$ 飞往机场 $t$ 的飞机,其燃油容量对应的航程为 $c\text{ km}$。
输出格式
对于每个测试用例,输出用例编号,随后为每个查询输出一行,包含在燃油限制 $c$ 下,机场 $s$ 和 $t$ 之间最短飞行路径的长度(单位:km)。长度需精确到小数点后三位。如果两个机场之间不存在可行的路径,则输出 impossible。
你可以假设答案对于 $R$ 或 $c$ 最多 $0.1\text{ km}$ 的扰动在数值上是稳定的。
样例
输入 1
3 2000 0 0 0 30 30 0 3 2 3 5000 2 3 4000 2 3 3000 2 10000 45 45 225 -45 2 1 2 50000 2 1 50000
输出 1
Case 1: 4724.686 6670.648 impossible Case 2: impossible impossible