图:大小为 4 的 Voronoi 图。
在二维笛卡尔坐标系中,我们定义非空点集 $S$ 的 Voronoi 图(Voronoi Diagram)为根据“在此位置上,点集 $S$ 中的哪个点最近?”这一标准来划分平面的图。更具体地,给定非空点集 $\{P_1, P_2, \dots, P_n\}$ 的 Voronoi 图是区域的集合:当且仅当对于所有 $1 \le j \le n$,都有 $d(P_i, K) \le d(P_j, K)$ 成立时,点 $K$ 被包含在区域 $i$ 中,其中 $d(X, Y)$ 表示点 $X$ 和 $Y$ 之间的欧几里得距离。
例如,在上图中,平面上的每个位置都根据距离其最近的点进行了着色。属于单个区域的点被着色为表示该区域的浅色,而属于多个区域的点则构成了黑色的线和点。
存在一种可以在 $O(n \log(n))$ 时间内计算 Voronoi 图的算法,但它因极其复杂和困难而闻名。事实上,我们是仁慈的出题人,因此我们设置了 $n \le 2000$,这意味着你可以使用较慢的 Voronoi 图算法来解决此任务!
在本任务中,你需要解决 Voronoi 图中的点查询问题:在由点集 $\{P_1, P_2, \dots, P_n\}$ 构建的 Voronoi 图中,你需要确定给定的点属于哪个(些)区域。更具体地,你将获得 $q$ 个点查询。对于每个查询点,你需要确定以下内容:
- 如果它不属于任何区域,输出
NONE。 - 如果它恰好属于一个区域,输出
REGION X,其中X是该区域的编号。 - 如果它恰好属于两个区域,输出
LINE X Y,其中X和Y($X < Y$)是这两个区域的编号。 - 如果它属于三个或更多区域,输出
POINT。
输入格式
第一行包含两个整数,分别表示构成 Voronoi 图的点数 $n$ 和查询数 $q$。($3 \le n \le 2\,000$,$1 \le q \le 250\,000$)
接下来的 $n$ 行中,第 $i$ 行包含两个整数,表示 $P_i$ 的 $x$ 和 $y$ 坐标。这些是构成 Voronoi 图的点。所有 $n$ 个点互不相同。($|x|, |y| \le 10^4$)
接下来的 $q$ 行中,第 $j$ 行包含两个整数,表示 $Q_j$ 的 $x$ 和 $y$ 坐标。对于每个点 $Q_j$,你需要确定该点属于哪个(些)区域。($|x|, |y| \le 10^4$)
输出格式
输出包含 $q$ 行。在第 $j$ 行中,你应该输出以下内容之一:
- 如果 $Q_j$ 不属于任何区域,输出
NONE。 - 如果 $Q_j$ 恰好属于一个区域,输出
REGION X,其中X是该区域的编号。 - 如果 $Q_j$ 恰好属于两个区域,输出
LINE X Y,其中X和Y($X < Y$)是这两个区域的编号。 - 如果 $Q_j$ 属于三个或更多区域,输出
POINT。
样例
输入样例 1
4 3 -5 0 0 5 3 4 1 -6 -2 2 0 0 2 2
输出样例 1
LINE 1 2 POINT REGION 3
说明
样例对应的图示即为上图。