编写一个程序,根据平面上给定的一组点构造一个多边形。该点集中的每个点都必须是多边形的一个顶点,且多边形不能有任何其他顶点。多边形的任意两条线段除相邻两条线段的公共端点外,不能有任何其他公共点。例如,给定左侧的点,右侧显示了一个合法的多边形:
保证存在合法的多边形,且任何合法的多边形都将被接受为正确答案。此外,没有两个点会重合,且并非所有点都共线。
输入格式
输入的第一行包含一个整数 $c$ ($1 \le c \le 200$),表示测试用例的数量。接下来是测试用例,每行一个。
每个测试用例以一个整数 $n$ ($3 \le n \le 2000$) 开始,表示给定的点数。然后,在同一行中,给出这些点的坐标。每个点由两个整数 $x$ 和 $y$ 指定,范围在 $-10\,000$ 到 $10\,000$ 之间(含边界)。
输出格式
对于每个测试用例,输出单行,包含 $0$ 到 $n - 1$ 的一个排列。这些数字中的每一个都代表一个点的索引(按照输入中给出的顺序,从 $0$ 开始编号)。当按照该排列给出的顺序在相邻点之间绘制线段时,其结果必须是一个合法的多边形。
样例
样例输入 1
2 4 0 0 2 0 0 1 1 0 5 0 0 10 0 10 5 5 -1 0 5
样例输出 1
0 3 1 2 3 1 2 4 0