Jeroen 设计了一种判断点是否在多边形内的新算法: 给定一个简单多边形 $p_0, p_1, \dots, p_{n-1}$ 和一个查询点 $\mathbf{q}$,他的算法执行以下步骤:
- 初始化 $ans := 0$
- 从 $\mathbf{q}$ 出发,沿 $x$ 轴正方向作一条射线。
- 对于所有 $0 \le i < n$:检查闭合线段 $p_i p_{(i+1) \pmod n}$ 是否与射线相交,如果相交,则 $ans$ 加 1。
- 对于所有 $0 \le i < n$,如果 $p_i$ 落在射线上,则 $ans$ 加 1。
- 如果 $ans$ 为奇数,算法判定点在多边形内,否则判定在多边形外。
他确信自己的算法是正确的,但你必须证明他是错的。为了让他难堪,你需要寻找一些多边形,使得点 $(0, 0)$ 严格在多边形内部(即不在边界上),但他的算法却判定该点在外部。考虑所有顶点坐标为整数的简单多边形,并按面积对这个无限列表进行排序(面积相同时顺序任意)。给定输入中的整数 $k \le 10^3$,输出该列表中的前 $k$ 个多边形。如果存在多种可能的答案,你可以输出其中任意一种。
注意,如果多边形 $\mathbf{a}$ 的点列表是多边形 $\mathbf{b}$ 的点列表的循环移位,则认为这两个多边形相同。如果多边形 $\mathbf{a}$ 的点列表的逆序是 $\mathbf{b}$ 的点列表的循环移位,也认为这两个多边形相同。因此,在无限列表中,这两种情况只计入一个多边形。注意,尽管在多边形的一条边上放置一个额外的整数点会产生相同的形状,但这会被视为一个不同的多边形。
输入格式
输入仅包含一个整数 $k$ ($1 \le k \le 1000$),表示你需要输出的多边形数量。
输出格式
对于前 $k$ 个 Jeroen 算法失效的多边形,按面积从小到大排序,输出其描述: 描述的第一行输出 $n$,即多边形的顶点数。 接下来的 $n$ 行,每行输出两个整数 $x$ 和 $y$ ($|x|, |y| \le 10^9$),表示多边形的顶点坐标。
根据题目约束,可以证明,如果前 $k$ 个有效多边形的最小面积为 $A_1 \le A_2 \le \dots \le A_k$,那么增加坐标绝对值不超过 $10^9$ 的约束不会改变这个面积列表。
注意,输出的多边形必须是简单多边形。
样例
输入 1
2
输出 1
4 -1 0 0 1 1 0 0 -1 3 0 -4 3 5 -3 5
说明
样例输入的输出实际上是错误的。它仅用于展示输出格式。这两个多边形都包含点 $(0, 0)$,但 Jeroen 的算法并没有失效,且它们的面积也不保证是最小的两个面积。