#CF2122F. 彩色多边形

彩色多边形

F. 彩色多边形
时间限制:2 秒
内存限制:256 兆字节


给定一个数组 a1,a2,,ana_1, a_2, \dots, a_n,其中 n8n \le 8a1+a2++an100a_1 + a_2 + \dots + a_n \le 100

构造一个简单多边形(顶点数 333\le 333),使其恰好有

$$\frac{(a_1 + a_2 + \dots + a_n)!}{a_1! \, a_2! \, \cdots \, a_n!} $$

种不同的三角剖分。可以证明这样的多边形总是存在的。


  • 简单多边形是指不自交且无孔的多边形。换言之,任意两条非相邻边无公共点,相邻边只有一个公共顶点(即它们之间的顶点)。相邻边可以共线。

† 一个 mm 个顶点的多边形的三角剖分是指一组 m3m-3 条对角线,它们仅在顶点处相交。对角线是连接两个顶点的线段,它位于多边形内部,且与多边形边的公共点恰好是两个端点。


输入
每个测试用例的第一行包含一个整数 nn2n82 \le n \le 8)—— 数组的长度。
第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1001 \le a_i \le 100)—— 数组的元素。
保证 a1+a2++an100a_1 + a_2 + \dots + a_n \le 100


输出
第一行输出一个整数 mm3m3333 \le m \le 333)—— 多边形的顶点数。
接下来 mm 行,每行输出两个整数 xi,yix_i, y_i106xi,yi106-10^6 \le x_i, y_i \le 10^6)—— 多边形第 ii 个顶点的坐标。

多边形必须是简单的。顶点可以按顺时针或逆时针顺序给出。


样例
输入

3
1 1 2

输出

8
0 0
2 1
4 2
6 1
3 5
4 7
0 5
1 2

输入

2
4 1

输出

5
-2 -2
-3 1
0 3
3 1
2 -2

说明
在第一个测试用例中,要求的多边形必须有

4!1!1!2!=12\frac{4!}{1! \, 1! \, 2!} = 12

种三角剖分。下面给出了示例多边形的所有三角剖分(图略)。

在第二个测试用例中,要求的多边形必须有

5!4!1!=5\frac{5!}{4! \, 1!} = 5

种三角剖分。