在不久的将来,在附近的一个星系中,你发现自己想要去旅行,暂时摆脱作为桑德拉星球(Planet Thundera)唯一纱线制造商的责任。你决定前往最令人放松的星球——关爱星球(Planet Care-a-Lot)。为了旅行,你打算使用星际传送器网络。
传送器是漂浮在太空中某处的微型机器。你可以从空间中的任何一点远程使用它,但由于传送距离守恒原理,它能将你传送到空间中的任何其他点,且该点与传送器之间的 $L1$ 距离必须与你传送前所在位置与该传送器之间的 $L1$ 距离完全相同。两个坐标为 $(x_0, y_0, z_0)$ 和 $(x_1, y_1, z_1)$ 的点之间的 $L1$ 距离由 $|x_0 - x_1| + |y_0 - y_1| + |z_0 - z_1|$ 给出。不幸的是,你的太空喷气背包坏了,所以你无法独自移动;要旅行,你只能使用传送器。你从桑德拉星球出发。你可以使用一个传送器从桑德拉星球旅行到点 $p_1$,然后使用另一个传送器从 $p_1$ 旅行到 $p_2$,依此类推。最后一次传送必须将你准确地带到关爱星球。
给定三维空间中两个星球和所有可用传送器的位置,找出是否仅使用传送器就能完成这次旅行。如果可以完成,到达目的地所需的最少传送次数是多少?(即使两次传送使用了同一个传送器,它们仍计为单独的传送。)
输入给出的点坐标均为整数,且落在一定范围内。但是,你可以传送到坐标为整数或非整数的中间点,并且对你可以访问的点没有范围限制。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $N$,表示可用的传送器数量。随后有 $N+2$ 行,每行包含三个整数 $X_i, Y_i, Z_i$。其中第一行表示你的家乡星球桑德拉的坐标。第二行表示目的地星球关爱星球的坐标。其余 $N$ 行中的每一行表示一个传送器的坐标。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是如果无法仅使用可用传送器从桑德拉到达关爱星球则为 IMPOSSIBLE,如果可以到达,则为一个表示所需最少传送次数的整数。
数据范围
内存限制:1 GB。 $1 \le T \le 100$。 对于所有 $i \neq j$,$(X_i, Y_i, Z_i) \neq (X_j, Y_j, Z_j)$。(没有两个描述的对象具有相同的坐标。)
子任务 1 时间限制:60 秒。 $1 \le N \le 100$。 $-10^3 \le X_i, Y_i, Z_i \le 10^3$。
子任务 2 时间限制:120 秒。 $1 \le N \le 150$。 $-10^{12} \le X_i, Y_i, Z_i \le 10^{12}$。
样例
样例输入 1
3 1 0 0 0 0 4 0 0 3 0 2 0 0 1 0 0 11 0 0 3 0 0 0 3 0 0 0 6 2 0 6 0 0 3 0 0 6 1 0
样例输出 1
Case #1: IMPOSSIBLE Case #2: 3 Case #3: 2
说明
在样例 1 中,唯一的传送器距离桑德拉正好 3 个单位,我们只能用它去往另一个距离该传送器正好 3 个单位的位置。从那个位置出发,我们仍然只能到达距离该传送器 3 个单位的位置。由于关爱星球距离该传送器 1 个单位,我们永远无法到达它。
在样例 2 中,最优策略是先使用位于 $(0, 0, 3)$ 的传送器前往 $(0, 0, 5)$。然后,从那里使用位于 $(0, 0, 0)$ 的传送器前往 $(0, 0, -5)$。最后,从那里再次使用位于 $(0, 0, 3)$ 的传送器前往 $(0, 0, 11)$。注意,两次使用位于 $(0, 0, 3)$ 的传送器导致我们行进的距离不同,因为我们每次距离传送器的距离不同。还要注意,两次使用该传送器计为两次单独的传送。
在样例 3 中,最优策略是先使用位于 $(3, 0, 0)$ 的传送器前往 $(6, 0, 0)$。然后,从那里使用位于 $(6, 1, 0)$ 的传送器前往 $(6, 2, 0)$。注意,即使在 $(6, 0, 0)$ 处有一个传送器,仅仅占据与传送器相同的位置并不算作使用它。