镜面陷阱是一个由镜子构成的长方体,镜子的反射面朝向长方体内部。在长方体的几何中心处有一个微型激光器(忽略其尺寸)。任务是调整激光器的方向,使得激光束行进的总距离尽可能长,并最终回到激光器本身。我们所说的总距离是指激光束在平行于镜面边缘的三个方向上行进距离之和(即使用所谓的曼哈顿距离)。
陷阱的尺寸均为偶数。陷阱的棱和顶点(不同侧面相交的地方)不会反射激光束。我们在长方体内建立一个笛卡尔坐标系,其坐标轴平行于陷阱的棱,激光器位于原点。激光可以瞄准陷阱内的任何整点(即所有坐标均为整数的点),包括镜面上的点(唯一的例外是激光器本身,即点 $(0,0,0)$)。
编写一个程序:
- 从标准输入读取镜面陷阱的尺寸。
- 计算出一个点,使得从激光器向该点发射的激光束:
- 会从镜面上反射(不一定需要反射所有镜面)。
- 不会穿过镜面陷阱的任何棱或顶点。
- 会回到激光器,可能从不同的方向返回。
- 行进的总距离尽可能长(按上述定义)。
- 将结果写入标准输出。
输入格式
单个测试包含多个需要分析的镜面陷阱。标准输入的第一行包含一个整数 $1 \le K \le 1\,000$,表示需要分析的陷阱数量。在第 $2 \dots K+1$ 行中,每行包含一个陷阱的描述。陷阱的描述由三个用空格分隔的数字 $5 \le x, y, z \le 1\,000$ 组成。该镜面陷阱的尺寸为 $2x \times 2y \times 2z$。
输出格式
你的程序应向标准输出写入恰好 $K$ 行。第 $i$ 行应包含第 $i$ 个陷阱的解:三个用空格分隔的整数 $k_x, k_y, k_z$,满足 $-x \le k_x \le x, -y \le k_y \le y, -z \le k_z \le z$ 且 $(k_x, k_y, k_z) \ne (0,0,0)$。这些数字表示在第 $i$ 个陷阱中,激光应瞄准坐标为 $(k_x, k_y, k_z)$ 的点。
如果存在多个正确的解,你的程序只需输出其中任意一个。
样例
输入 1
2 5 6 7 5 6 6
输出 1
4 5 6 4 6 5