#P13785. [2024年山东第二轮集训]粉兔的154(154)

[2024年山东第二轮集训]粉兔的154(154)

题目描述

粉兔的机房有一棵nn个节点的树,每个节点是一台计算机。在粉兔奋斗期间,Codeforces一共举办了共nn场比赛,每场比赛开始前,第ii场比赛开始时,粉兔坐在点ii所在的计算机,它会瞬间AK比赛。之后,粉兔会把自己的代码发送给相邻计算机,相邻计算机在下一个时刻AK比赛。具体来说,第ii场比赛时,对于点jj的计算机,这台计算机在dist(i,j)dist(i,j)时刻AK比赛(dist(i,j)dist(i,j)i,ji,j之间的边数)。

然而,所有人代码都一样,而Codeforces有查重功能。一场比赛中,如果两个选手代码一样,先提交的那个选手会成绩无效。如果他们在同一个时刻提交,则成绩都无效。最终,只有最多一个人AK:如果离点ii最远的点只有一个点,这个点可以成功AK比赛。

比赛结束后,小粉兔炸了粉兔的机房,CF服务器上只剩每场比赛的结果了。pip_i表示第ii场比赛的胜利者(pi=1p_i=-1表示所有人都成绩无效)。

你很关心粉兔机房的形状,请你给出一种可能的粉兔机房的形状,如果不存在任何可能的机房形状,请输出无解。

输入格式

第一行包含一个整数 nn,表示粉兔的机房的点数。

接下来nn个数p1,p2,,pnp_1,p_2,\cdots,p_n

输出格式

第一行,如果有解则输出 Possible ;无解则输出 Impossible

如果第一行是Possible,则再输出n1n-1行,每行两个数,表示树的一条边。

样例1

Input
1
1
Output
Possible

样例2

Input
5
-1 5 4 5 4
Output
Possible
4 2
2 1
1 3
3 5

样例3

Input
5
-1 1 5 4 -1
Output
Impossible

数据范围

本题有Special Judge。输出任意一种可行的树都能通过。

对于所有数据,n1000000,pi[1,n],pi0n\leq 1000000,p_i\in[-1,n],p_i\ne 0

S|S|是输入中不同pip_i的数量。

子任务1(20分). n10n\leq 10

子任务2(15分). S=1|S|=1

子任务3(15分). S=2|S|=2

子任务4(15分). S=3|S|=3

子任务5(5分). S=4|S|=4

子任务6(30分). 无特殊限制。