Henryk 必须完成若干个三维水力订单。每个订单包括将进水口与出水口连接起来。这种连接是通过一系列管道和弯头配件完成的。管道是直管段,弯头将两根管道的末端以直角连接起来。在进水口处,我们必须根据指定的进水方向放置第一个弯头;在出水口处,我们必须根据指定的出水方向放置最后一个弯头。
进水口和出水口都位于水平面上,这意味着这些方向向量的 $z$ 坐标为 $0$。
为简化起见,我们假设进水口、出水口和所有弯头都没有尺寸,即它们是三维空间 $\mathbb{R}^3$ 中的点,而管道也没有宽度,即它们是三维空间 $\mathbb{R}^3$ 中的线段。
进水口和出水口位于不同的位置。第一根管道必须从进水口点开始,并垂直于进水方向。随后的每一根管道必须从前一根管道的末端开始,并与其垂直。最后一根管道必须在出水口点结束,并垂直于出水方向。每根管道的长度必须为正。
管道除了上述描述的位置外,不能在其他任何地方相交。特别地,所有弯头必须位于不同的点,且不能位于任何管道内部,管道除了弯头外不能共享任何公共点。
对于每个订单,请判断它是否可以完成,如果可以,计算完成该订单所需的最少弯头数量。
输入格式
输入的第一行包含订单数量 $t$ ($1 \le t \le 100$)。每个订单由四行描述。
每个订单的第一行包含三个整数 $x_1, y_1, z_1$ ($-20 \le x_1, y_1, z_1 \le 20$),描述进水口的点 $(x_1, y_1, z_1)$。
订单的第二行包含两个整数 $p_1, q_1$ ($-20 \le p_1, q_1 \le 20, (p_1, q_1) \neq (0, 0)$),描述进水口的方向。
接下来的两行以相同的格式描述出水口的坐标 $(x_2, y_2, z_2)$ 和方向 $(p_2, q_2)$。
进水口和出水口位于不同的点:$(x_1, y_1, z_1) \neq (x_2, y_2, z_2)$。
水流沿向量 $(p_1, q_1, 0)$ 水平流动,意味着从点 $(x_1 - p_1, y_1 - q_1, z_1)$ 的方向流来。出水也是水平的,沿向量 $(p_2, q_2, 0)$ 方向,意味着流向点 $(x_2 + p_2, y_2 + q_2, z_2)$ 的方向。
这些向量的长度并不重要;只有它们的方向和朝向很重要。朝向是指水流动的方向,即在进水口处指向弯头,在出水口处背离弯头。
输出格式
输出应包含 $t$ 行。在第 $i$ 行中,你应该提供完成该订单所需的最少弯头数量,如果订单不可行,则输出单词 NIE。
样例
输入 1
2 -1 -1 3 1 1 2 2 3 2 2 5 5 1 3 0 7 6 -2 1 -2
输出 1
4 3
说明
在第一个样例中,最优解是使用四个弯头,例如依次在点 $(-1, -1, 3), (-2, 0, 3), (1, 3, 3), (2, 2, 3)$ 处放置:
一个低效的解法是使用六个弯头,分别在点 $(-1, -1, 3), (-2, 0, 3), (-1, 1, 4), (1, -1, 4), (3, 1, 4), (2, 2, 3)$ 处放置:
在第二个样例中,我们可以使用三个弯头,分别在点 $(5, 5, 1), (5, 5, -2), (7, 6, -2)$ 处放置: