LaLa 的实验室里有一堆“魔法圆”。
一个魔法圆可以用一种特殊墨水绘制的简单多边形来表示,如果它是凸的,即其所有内角均小于或等于 $\pi$,则称其为“可用”的。
LaLa 计划将每个魔法圆都变成可用的。然而,如果操作不当,它们可能会失去所有的魔法力量。幸运的是,LaLa 有一个完美的魔法工具来处理这个问题。
该工具的工作原理如下:当你放入一个魔法圆时,如果该圆是可用的,工具会报告它是可用的。否则,它会选取两个不同的点 $u$ 和 $v$,使得:
- $u$ 和 $v$ 位于魔法圆凸包的边界上,且
- 从 $u$ 到 $v$ 沿魔法圆边界逆时针方向的路径上,除了 $u$ 和 $v$ 之外,没有任何点位于魔法圆凸包的边界上。
然后,它将 $u-v$ 路径绕 $u$ 和 $v$ 的中点旋转 $\pi$。换句话说,对于 $u-v$ 路径上的每个点 $w$,$w$ 变为 $u + v - w$,其中加法是在绘制魔法圆的纸张所在的二维坐标系上按坐标进行的。注意,此修改的结果也是一个简单多边形。
LaLa 不知道的是,她的妹妹 LiLi 偷听了 LaLa 的计划。LiLi 知道 LaLa 有多懒,为了恶作剧,LiLi 会偷偷放入一个需要大量使用该工具才能使其可用的魔法圆。更具体地说,LiLi 会在堆中添加一个魔法圆,它是最多 $1\,000$ 条线段的并集,并且该工具可以通过 $120\,000$ 到 $1\,000\,000$ 次修改操作将其变为一个可用的魔法圆。
请编写一个程序来帮助 LiLi 计算出这样一个魔法圆。
输出格式
输出应采用以下格式:
$N$ $x_0 \ y_0$ $x_1 \ y_1$ $\vdots$ $x_{N-1} \ y_{N-1}$ $Q$ $a_0 \ b_0 \ c_0 \ d_0$ $a_1 \ b_1 \ c_1 \ d_1$ $\vdots$ $a_{Q-1} \ b_{Q-1} \ c_{Q-1} \ d_{Q-1}$
其中,初始魔法圆是连接点 $(x_i, y_i)$ 和 $(x_{(i+1 \bmod N)}, y_{(i+1 \bmod N)})$ 的 $N$ 条线段的并集(对于所有整数 $0 \le i < N$),并且它有一系列长度为 $Q$ 的工具修改操作,其中第 $i$ 次修改选择了从点 $(a_i, b_i)$ 到 $(c_i, d_i)$ 的逆时针路径。
输出必须满足以下约束:
- 输出中的所有数字均为整数。
- $3 \le N \le 1\,000$
- $120\,000 \le Q \le 1\,000\,000$
- 对于所有整数 $0 \le i < N$ 和 $0 \le j < Q$,满足 $0 \le x_i, y_i, a_j, b_j, c_j, d_j \le 1\,000\,000\,000$。
- 对于所有整数 $0 \le i < j < N$,满足 $x_i \neq x_j$ 或 $y_i \neq y_j$。
- 对于所有整数 $0 \le i < Q$,满足 $a_i \neq c_i$ 或 $b_i \neq d_i$。
- 点序列 $(x_0, y_0), (x_1, y_1), \dots, (x_{N-1}, y_{N-1})$ 定义了一个简单多边形的逆时针遍历。
- 对于所有整数 $0 \le i < Q$,在第 $i$ 次修改后,选择从 $(a_i, b_i)$ 到 $(c_i, d_i)$ 的逆时针路径进行修改是有效的。
- 最终的魔法圆是可用的。
注意,允许两条连续的线段以 $\pi$ 的角度相交。另请注意,不需要最小化任何数字,你的程序只需满足所有输出约束即可。
样例
输入 1
(无)
输出 1
8 1 0 4 0 6 0 3 1 5 2 2 1 6 3 0 2 4 6 0 6 3 10 2 6 3 10 2 9 4 9 4 0 2
说明
请注意,上述样例输出不满足 $120\,000 \le Q \le 1\,000\,000$ 的条件,因此提交后会得到 Wrong Answer 判决。它仅用于展示输出格式。
下图展示了样例输出的初始魔法圆:
下图展示了使用该工具使其可用的操作序列。边界的虚线部分是工具修改的路径,修改后变为红色部分。