切塞纳蒂科(Cesenatico)的主广场上有一座色彩缤纷的摩天轮,这是该市的标志性景点之一。在冬天时,摩天轮已被拆卸并储存了起来。但现在夏天快到了,是时候重新组装它了!那些被拆的零件刚抵达广场,在你的帮助下,我们准备把它们全部组装起来。
在你面前有 个独立的座舱,需要以环形方式相互连接,组成一个摩天轮。这些座舱编号从 到 ,但并不一定按照它们应该被连接的顺序排列。
每个座舱都带有一个特殊的连接点,用于按顺时针方向连接到下一个座舱。每个连接点有两种可能的类型:
- 类型 [
+]:只能连接到编号更大的座舱;
- 类型 [
-]:只能连接到编号更小的座舱。
在下面的样例中,座舱 有一个 [+] 类型的连接点。这意味着按顺时针方向连接的下一个座舱必须是座舱 或 。
:::align{center}

,五个独立的座舱,每个都有一个 [+] 或 [-] 类型的连接点。
:::
给定座舱的数量和它们的连接点类型,你的任务是判断是否可以将这 个座舱组装成一个摩天轮。如果答案是可以,你还需要找出一种座舱在摩天轮上的排列顺序。
:::align{center}

可以用上述五个座舱组装出的合法摩天轮。
:::
图 2 显示了用图 1 中的五个座舱组装出的一个合法摩天轮。
形式化来说,合法的座舱顺序是一个数字序列 ,且具有以下性质:
- 从 到 的每个数字在序列中恰好出现一次。
- 对于每个 ,座舱 必须满足座舱 的连接点类型所规定的条件。也就是说,如果座舱 的连接点类型是 [
+],那么 ;如果是 [-],那么 。
- 此外,座舱 必须满足座舱 的连接点类型所规定的条件。