#CYTUS3. 误检星图

误检星图

两台扫描仪分别得到了 n 个二维点,记为点集 A 和 B。同一个点集中没有重复坐标,输入顺序没有含义。

为了校准两台扫描仪,你可以对 A 依次进行以下变换:

  1. 绕原点逆时针旋转 r 个 90°,其中 r 为 0、1、2、3 之一;
  2. 将所有点平移同一个整数向量 (d_x,d_y)。

如果变换后至少有 n−1 个 A 中的点与 B 中的点重合,就称三元组 (r,d_x,d_y) 是一种有效校准。

请输出全部有效校准。题目不保证一定存在有效校准。

逆时针旋转一次 90° 会将 (x,y) 变为 (−y,x)。不同的三元组视为不同校准,即使它们对某个特殊点集产生相同的结果。

输入格式

本题只有一组输入数据。

第一行包含一个整数 n。

接下来 n 行,每行两个整数,描述 A 中一个点的坐标。

再接下来 n 行,每行两个整数,描述 B 中一个点的坐标。

输出格式

第一行输出有效校准的数量 z。

接下来 z 行,每行输出 r、d_x、d_y。所有三元组必须互不相同,并按 r、d_x、d_y 依次比较的字典序升序输出。

如果不存在有效校准,只输出一行 0。

数据范围

  • 2 ≤ n ≤ 200000;
  • 输入点的每个坐标都在 [−10^9,10^9] 内;
  • A 内部、B 内部各自没有重复点。

样例

4
0 0
1 0
0 2
10 10
5 -3
5 -2
3 -3
20 20
1
1 5 -3

说明:A 的前三个点旋转后分别为 (0,0)、(0,1)、(−2,0),再平移 (5,−3),就得到 B 的前三个点。第四个点没有匹配。

下载样例数据