有一只怪物正在袭击我们的城市!我们的英雄,小兔子,前来拯救城市。小兔子拥有一项非常强大的技能——“断裂射线”。射线可以穿透怪物并对其造成巨大伤害。但怪物也拥有一项防御技能——“镜厅”。战场上放置了若干面镜子,可以反射射线。然而,由于射线威力过大,每面镜子只能反射一次射线,之后就会损坏。
我们可以将战场视为一个二维平面,用笛卡尔坐标系描述。平面上有 $n$ 面双面镜,可以看作平行于 $x$ 轴或 $y$ 轴的线段。它们的端点坐标均为整数。
小兔子将发射 $m$ 条射线。每条射线从一个点出发,初始方向与 $x$ 轴和 $y$ 轴成 $45^\circ$ 角。当射线击中一面镜子时,它会发生镜面反射(反射角等于入射角)。同时,它也会击碎镜子,这意味着镜子会消失。小兔子将依次发射射线。只有当射线超出范围(即不再击中任何镜子)时,小兔子才会发射下一条射线。保证射线不会经过任何坐标为整数的点。详见输入格式。
小兔子有信心击败怪物。然而,他想知道第 $i$ 条射线会击中哪些镜子。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 2$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n, m$ ($1 \le n, m \le 10^5$),分别表示镜子和射线的数量。
接下来的 $n$ 行中,第 $i$ 行包含四个整数 $x_1, y_1, x_2, y_2$ ($0 \le x_1, y_1, x_2, y_2 \le 10^9$),表示第 $i$ 面镜子的端点为 $(x_1, y_1)$ 和 $(x_2, y_2)$。保证 $x_1 = x_2$ 或 $y_1 = y_2$,且 $(x_1, y_1) \neq (x_2, y_2)$。同时保证任意两面镜子的交集为空集或仅为一个点。
接下来的 $m$ 行中,第 $i$ 行包含四个整数 $x, y, z, d$ ($0 \le x, y \le 10^9, 0 \le z \le 1, 0 \le d \le 3$),表示第 $i$ 条射线的起点和初始方向。
前三个整数 $x, y, z$ 表示射线的起点: $z = 0$:射线从 $(x + 0.5, y)$ 出发。 $z = 1$:射线从 $(x, y + 0.5)$ 出发。
最后一个整数 $d$ 表示射线的初始方向。我们使用向量来描述方向: $d = 0$:初始方向 $\vec{s} = (1, -1)$。 $d = 1$:初始方向 $\vec{s} = (-1, -1)$。 $d = 2$:初始方向 $\vec{s} = (-1, 1)$。 $d = 3$:初始方向 $\vec{s} = (1, 1)$。
保证射线的起点不会在任何镜子的线段上。
输出格式
第 $x$ 个测试用例的输出以 Case #x: 开头,占一行。
接下来的 $m$ 行中,第 $i$ 行的第一个整数为 $y$,表示第 $i$ 条射线总共击中了 $y$ 面镜子。随后是 $y$ 个整数,表示第 $i$ 条射线依次击中的镜子编号(按输入顺序,从 1 开始)。这些整数必须按照射线击中镜子的顺序给出。
样例
样例输入 1
1 4 2 1 0 6 0 5 4 4 4 1 3 3 3 5 6 4 6 7 2 1 1 0 2 0 3
样例输出 1
Case #1: 2 1 3 1 4