小彼得正在用他的玩具积木搭建一座塔。他使用了两种积木——立方体和圆柱体——并希望将它们全部堆叠成一座塔,其中除了最顶端的积木外,每个积木上方都恰好有一个积木。为了使塔保持稳定,从塔顶向下俯视时,每个积木的轮廓必须完全包含在下方积木的轮廓内(轮廓允许接触)。请问是否可以搭建这样一座塔?如果可以,积木应该按什么顺序堆叠?
Building blocks by Thaliesin on Pixabay
输入格式
输入包含:
一行一个整数 $n$ ($1 \le n \le 100$),表示积木的数量。
$n$ 行,每行描述一个积木。描述由一个表示积木类型的字符串(cube 或 cylinder)和一个整数 $a$ ($1 \le a \le 1\,000$) 组成,表示积木的大小——如果积木是立方体,则 $a$ 为其边长;如果积木是圆柱体,则 $a$ 为其底面半径(注意圆柱体的高度无关紧要)。
输出格式
如果无法搭建该塔,输出 impossible。否则,输出 $n$ 行,给出从塔顶到底部的积木堆叠顺序。
样例
样例输入 1
3 cube 7 cube 11 cylinder 5
样例输出 1
cube 7 cylinder 5 cube 11
样例输入 2
2 cube 5 cylinder 3
样例输出 2
impossible
样例输入 3
3 cube 4 cylinder 2 cube 4
样例输出 3
cylinder 2 cube 4 cube 4