问题描述
给定一个正整数 N 和一个长度为 2N 的由 0 和 1 组成的序列: A0,A1,ldots,A2N−1。确定是否存在一个闭曲线 C 满足以下条件,对于所有的 2N 个集合 Ssubseteq0,1,ldots,N−1。如果答案是肯定的,则构造一个满足该条件的闭曲线。
- 设 x=sumiinS2i,BS 是由点 (i+0.5,0.5) 组成的集合,其中 iinS。
- 如果有一种方式可以连续移动闭曲线 C 而不接触 BS,使得闭曲线上的每个点的 y 坐标为负数,则 Ax=1。
- 如果没有这样的方式,则 Ax=0。
有关打印闭曲线的指令,请参见下面的输出部分。
注释
当且仅当:
- C 是从 \[0,1\] 到 mathbbR2 的连续函数,并且 C(0)=C(1)。
我们说如果存在一个函数 $f : \[0,1\] \\times \[0,1\] \\rightarrow \\mathbb{R}^2$,满足以下所有条件,闭曲线 C 可以连续地移动而不接触点集 X,从而变成闭曲线 D。
- 存在一个连续函数 f。
- f(0,t)=C(t)。
- f(1,t)=D(t)。
- f(x,t)notinX。
约束条件
- 1leqNleq8
- Ai=0,1quad(0leqileq2N−1)
- A0=1
输入
输入以以下格式从标准输入给出:
N
A0A1cdotsA2N−1
输出
如果不存在满足条件的闭曲线,则输出 Impossible
。
如果存在这样的闭曲线,则在第一行打印 Possible
。然后,按以下格式打印一个闭曲线:
L
x0 y0
x1 y1
:
xL yL
这代表按此顺序通过 (x0,y0),(x1,y1),ldots,(xL,yL) 的闭合折线。
此外,闭曲线的长度 L 必须满足 0leqLleq250000。
可以证明,如果满足问题描述中的条件的闭曲线存在,则还可以以这种格式表示。
示例输入 1
1
10
示例输出 1
Possible
4
0 0
0 1
1 1
1 0
0 0
当 S=emptyset 时,我们可以移动这个曲线,使得它上面的每个点的 y 坐标为负数。

当 S=0 时,我们无法做到这一点。

示例输入 2
2
1000
示例输出 2
Possible
6
1 0
2 0
2 1
1 1
0 1
0 0
1 0
输出表示以下曲线:

示例输入 3
2
1001
示例输出 3
Impossible
示例输入 4
1
11
示例输出 4
Possible
0
1 1