#P15773. 环井砌筑

环井砌筑

题目描述

Bob 已经厌倦了修小房子和铺窄路。他接到了一份更适合自己的新工作:为一位想法古怪的客户建造一口圆形水井,而且这口井要无限深。客户已经准备好了无限多种弧形砖块,砖块之间只在弧长上有所不同,每种砖都有无限供应。

要让一口无限深的井保持稳定,需要仔细安排每一层砖。井壁由一圈一圈的砖组成;若相邻两层中,砖块之间的缝隙有任意两个正好上下对齐,则这口井不稳定。所有砖块的长度都是整数,每一层相对于零偏移位置的偏移量也必须是整数。即使某块砖的长度恰好等于整个圆周,它仍然有起点和终点,因此也会产生一条缝隙。

Bob 凭经验知道:如果可以建出这样的稳定井,那么只需要交替使用两种行配置即可。 左图展示使用样例 1 砖型但相邻两层缝隙对齐的不稳定方案;右图展示同样砖型下的稳定方案。图中需要标出零偏移方向箭头,并说明虽然只画出两层,但可通过交替重复两种行配置建成无限深的井。

给定可用砖块的弧长类型,判断是否可以建造一口圆周长恰好为 ww、高度无限且稳定的井。如果可以,请给出两种交替使用的行配置。

输入格式

输入第一行包含两个整数 n,wn,w,分别表示砖块类型数和井的圆周长。

第二行包含 nn 个整数 bib_i,表示每种砖块的弧长。

Bob 拥有每种砖块的无限供应。

输出格式

如果可以建造稳定井,输出 possible;否则输出 impossible

如果可以建造,还需要给出两种可以交替使用的行配置。对于每一种行配置,先输出一行两个整数:这一行所需砖块数量,以及放置第一块砖时的顺时针偏移量;然后输出一行,按顺时针顺序给出这一行中所有砖块的弧长。

偏移量必须是非负整数,且小于井的圆周长。若无限交替使用你输出的两种行配置可以得到稳定井,则答案有效。

如果有多种合法方案,输出任意一种即可。

数据范围

  • 1n,w31051\le n,w\le 3\cdot 10^5
  • 1biw1\le b_i\le w

样例 1

输入

4 12
3 2 7 2

输出

possible
5 0
2 3 2 3 2
3 1
3 2 7

样例 2

输入

3 11
6 7 8

输出

impossible