Siggy 是一个电子游戏爱好者,最近他一直在玩《超级马里奥 169》(这是比更流行的《超级马里奥 64》更冷门的续作)。这个游戏完全发生在海洋中,可以用三维坐标系来建模。玩家的目标是操控主角马里奥四处游动,并收集所有的金币,金币数量最多可达 169 枚。
然而,金币并不是直接可见的!相反,游戏中有最多 13 个开关,马里奥可以通过触碰它们来按下开关。按下任何一个开关都会导致最多 13 枚金币出现。此外,每个开关只能被按下一次;当它被按下时,任何之前由上一个开关(如果有的话)触发但尚未收集的金币都会消失,这意味着马里奥以后将无法收集它们。所有的开关和金币都很小,可以被视为点。
为了确保他能以尽可能最优的方式进行游戏,Siggy 想知道收集所有金币所需的最短距离。
输入格式
输入包含多个测试用例。每个测试用例以一行四个整数开始:
$n \ mx \ my \ mz$
其中 $n$ ($1 \le n \le 13$) 是开关的数量,三维点 $(mx, my, mz)$ 是马里奥的起始位置。
接下来重复 $n$ 次以下模式,每个开关一次。模式以一行四个整数开始:
$k \ sx \ sy \ sz$
其中 $k$ ($1 \le k \le 13$) 是该开关触发的金币数量,三维点 $(sx, sy, sz)$ 是该开关所在的位置。随后有 $k$ 行,每行三个整数:
$cx \ cy \ cz$
其中 $(cx, cy, cz)$ 是该开关触发的其中一枚金币的三维坐标。
所有点的坐标 $x, y, z$ 均在 $-1,000 \le x, y, z \le 1,000$ 范围内,且同一个测试用例中的所有点(无论是马里奥的起始点、开关还是金币)都是唯一的。输入以一行四个 $0$ 结束。
输出格式
对于每个测试用例,输出一个数字,表示马里奥收集所有金币所需的最短距离,保留两位小数(四舍五入)。每个数字占一行,不要输出多余空格。输出之间不要打印空行。
样例
样例输入 1
2 5 5 0 4 6 0 0 7 0 0 -11 -1 0 -11 1 0 -10 0 0 2 5 0 0 0 0 0 0 5 0 0 0 0 0
样例输出 1
44.22