#agc043e. [agc043_e]Topology

[agc043_e]Topology

问题描述

给定一个正整数 NN 和一个长度为 2N2^N 的由 0011 组成的序列: A0,A1,ldots,A2N1A_0,A_1,\\ldots,A_{2^N-1}。确定是否存在一个闭曲线 CC 满足以下条件,对于所有的 2N2^N 个集合 Ssubseteq0,1,ldots,N1S \\subseteq \\{0,1,\\ldots,N-1 \\}。如果答案是肯定的,则构造一个满足该条件的闭曲线。

  • x=sumiinS2ix = \\sum_{i \\in S} 2^iBSB_S 是由点 (i+0.5,0.5)(i+0.5,0.5) 组成的集合,其中 iinSi \\in S
  • 如果有一种方式可以连续移动闭曲线 CC 而不接触 BSB_S,使得闭曲线上的每个点的 yy 坐标为负数,则 Ax=1A_x = 1
  • 如果没有这样的方式,则 Ax=0A_x = 0

有关打印闭曲线的指令,请参见下面的输出部分。

注释

当且仅当:

  • CC 是从 \[0,1\]mathbbR2\\mathbb{R}^2 的连续函数,并且 C(0)=C(1)C(0) = C(1)

我们说如果存在一个函数 $f : \[0,1\] \\times \[0,1\] \\rightarrow \\mathbb{R}^2$,满足以下所有条件,闭曲线 CC 可以连续地移动而不接触点集 XX,从而变成闭曲线 DD

  • 存在一个连续函数 ff
  • f(0,t)=C(t)f(0,t) = C(t)
  • f(1,t)=D(t)f(1,t) = D(t)
  • f(x,t)notinXf(x,t) \\notin X

约束条件

  • 1leqNleq81 \\leq N \\leq 8
  • Ai=0,1quad(0leqileq2N1)A_i = 0,1 \\quad (0 \\leq i \\leq 2^N-1)
  • A0=1A_0 = 1

输入

输入以以下格式从标准输入给出:

NN A0A1cdotsA2N1A_0A_1 \\cdots A_{2^N-1}

输出

如果不存在满足条件的闭曲线,则输出 Impossible

如果存在这样的闭曲线,则在第一行打印 Possible。然后,按以下格式打印一个闭曲线:

LL x0x_0 y0y_0 x1x_1 y1y_1 :: xLx_L yLy_L

这代表按此顺序通过 (x0,y0),(x1,y1),ldots,(xL,yL)(x_0,y_0),(x_1,y_1),\\ldots,(x_L,y_L) 的闭合折线。

此外,闭曲线的长度 LL 必须满足 0leqLleq2500000 \\leq L \\leq 250000

可以证明,如果满足问题描述中的条件的闭曲线存在,则还可以以这种格式表示。


示例输入 1

1
10

示例输出 1

Possible
4
0 0
0 1
1 1
1 0
0 0

S=emptysetS = \\emptyset 时,我们可以移动这个曲线,使得它上面的每个点的 yy 坐标为负数。

S=0S = \\{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