在 2xxx 年,一支探险队降落在一颗行星上,发现了一些由该行星上的古代物种制造的奇异物体。它们是包含不透明实心球体的透明盒子(图 12)。此外还有许多石版,上面似乎记录了球体的位置和半径。
图 12:一个奇异物体
起初,它们的目的尚不清楚,但 Zambendorf 教授发现,由水平平面形成的横截面起着重要作用。例如,通过从下往上滑动平面,物体的横截面会发生如图 13 所示的变化。
图 13:不同位置的横截面
他最终发现,某些信息是通过横截面中连通图形数量的变化来表达的,其中每个连通图形都是相交或相切的圆盘的并集,而每个圆盘都是相应实心球体的横截面。例如,在图 13 中(其几何结构在稍后的第一个样例数据集中描述),连通图形的数量在 $z = 0.0000, 162.0000, 167.0000, 173.0004, 185.0000, 191.9996, 198.0000, 203.0000$ 和 $205.0000$ 处分别变化为 $0, 1, 2, 1, 2, 3, 2, 1$ 和 $0$。通过为增加分配 $1$,为减少分配 $0$,该序列的变化可以用一个 8 位二进制数 $11011000$ 来表示。
为了辅助进一步分析,请编写一个程序,确定当水平平面从底部 ($z = 0$) 滑动到顶部 ($z = 36000$) 时,连通图形数量的变化。
输入格式
输入包含一系列数据集。每个数据集以一行包含一个正整数开始,表示数据集中的球体数量 $N$。随后是 $N$ 行,描述球体的中心和半径。这 $N$ 行中的每一行都有四个正整数 $X_i, Y_i, Z_i$ 和 $R_i$ ($i = 1, \dots, N$),分别描述第 $i$ 个球体的中心坐标和半径。
你可以假设 $1 \le N \le 100$,$1 \le R_i \le 2000$,$0 < X_i - R_i < X_i + R_i < 4000$,$0 < Y_i - R_i < Y_i + R_i < 16000$,以及 $0 < Z_i - R_i < Z_i + R_i < 36000$。每个实心球体定义为满足 $(x - X_i)^2 + (y - Y_i)^2 + (z - Z_i)^2 \le R_i^2$ 的所有点 $(x, y, z)$ 的集合。
一个球体可能包含其他球体。没有两个球体是相互切的。任意两个球体相交形成的圆的最小/最大 $z$ 坐标与任何 $Z_i \pm R_i$ 之间的差值至少为 $0.01$。
输入的结尾由一行包含一个零表示。
输出格式
对于每个数据集,你的程序应输出两行。第一行应包含一个整数 $M$,表示变化的次数。第二行应包含一个 $M$ 位的二进制数,表示如上所述的连通图形数量的变化。
样例
输入 1
3 95 20 180 18 125 20 185 18 40 27 195 10 1 5 5 5 4 2 5 5 5 4 5 5 5 3 2 5 5 5 4 5 7 5 3 16 2338 3465 29034 710 1571 14389 25019 842 1706 8015 11324 1155 1899 4359 33815 888 2160 10364 20511 1264 2048 8835 23706 1906 2598 13041 23679 618 1613 11112 8003 1125 1777 4754 25986 929 2707 9945 11458 617 1153 10358 4305 755 2462 8450 21838 934 1822 11539 10025 1639 1473 11939 12924 638 1388 8519 18653 834 2239 7384 32729 862 0
输出 1
8 11011000 2 10 2 10 2 10 28 1011100100110101101000101100