Stefan、David 和 Felix 正在准备一场 ACM 风格的编程竞赛。Stefan 提出了以下任务:
给定平面上的 $N$ 个点和 $N$ 个运动向量,找到向量与点之间的一一对应关系,使得如果将每个点按对应的向量进行移动(平移),任意两点之间的距离都不会减小。
David 很快就解决了这个问题,并声称它太简单了,不适合放入题集中。为了说服他,Felix 提出了以下更新:在所有可能的方案中,选择使得所有结果两两距离的平方和最大的那一个。
David 仍然觉得这个问题很简单,你同意吗?
输入格式
第一行包含一个整数 $N$,表示点和向量的数量 ($1 \le N \le 500$)。 接下来的 $N$ 行描述点。每行包含两个整数 $px_i$ 和 $py_i$ ($0 \le |px_i|, |py_i| \le 10\,000$)。 随后是 $N$ 行向量描述。每个向量由两个整数 $vx_i$ 和 $vy_i$ 定义 ($0 \le |vx_i|, |vy_i| \le 10\,000$)。
输出格式
如果存在一种建立一一对应关系的方法,使得所有两点间的距离都不会减小,则在输出的第一行打印 “Yes”。在下一行,打印 $N$ 个从 $1$ 到 $N$ 的不同整数,其中第 $i$ 个数字表示分配给第 $i$ 个点的向量编号。
请务必选择使所有结果两两距离的平方和最大的答案。如果仍有多个答案,输出其中任意一个即可。
如果无法满足所需条件,则在输出的单行中打印 “No”。
样例
样例输入 1
2 0 0 1 0 2 0 -2 0
样例输出 1
Yes 2 1
样例输入 2
2 2 2 2 2 -1 -1 -1 -1
样例输出 2
Yes 1 2
样例输入 3
3 -2 -3 3 1 -3 -3 -3 5 -2 -4 4 -1
样例输出 3
Yes 2 3 1
说明
在第一个样例中,点和向量之间只有两种可能的对应方式。在两种对应方式 “1 2” 和 “2 1” 中,任意两点间的距离都不会减小。在第一种情况下,所有结果两两距离的平方和等于 $9$,而在第二种情况下等于 $25$。因此,唯一正确的答案是 “2 1”。
在第二个样例中,同样只有两种可能的对应方式。在这两种情况下,任意两点间的距离都不会减小,且所有结果两两距离的平方和等于 $0$。因此,两个答案都是正确的。