CF1932D Card Game
题目描述
两名玩家正在玩在线纸牌游戏。游戏使用一副 $32$ 张牌进行。每张牌都有花色和数字。有四种花色:梅花、方块、红心和黑桃。用字符 `C`、`D`、`H` 和 `S` 分别表示它们。共有 8 种数字,按递增顺序为 `2`、`3`、`4`、`5`、`6`、`7`、`8`、`9`。
每张牌由两个字母表示:其等级和花色。例如,红心 8 可以表示为 `8H`。
在游戏开始时,会选择一种花色作为王牌花色。
在每一轮中,玩家的操作如下:第一个玩家在桌子上放一张牌,第二个玩家必须用自己的一张牌打败这张牌。之后,两张牌都被移动到弃牌堆中。
一张牌可以打败另一张牌,如果两张牌都具有相同的花色,并且第一张牌的等级比第二张牌高。例如,方块 8 可以打败方块 4。此外,王牌可以打败任何非王牌牌,无论牌的等级如何,例如,如果王牌花色是梅花 (`C`),那么梅花 3 可以打败方块 9。请注意,王牌只能被等级更高的王牌打败。
游戏中进行了 $n$ 轮,因此弃牌堆现在包含 $2n$ 张牌。你想要重建游戏中进行的轮次,但是弃牌堆中的牌已经洗牌。找到可能在游戏中玩过的 $n$ 轮的任何可能顺序。
输入格式
第一行包含整数 $t$($1\le t\le100$),表示测试数据数量。接下来是 $t$ 个测试数据。
每个测试数据的第一行包含整数 $n$($1\le n\le16$)。
每个测试数据的第二行包含一个字符,即王牌花色。它是 `CDHS` 中的一个。
每个测试数据的第三行包含 $2n$ 张牌的描述。每张牌由一个两个字符的字符串描述,第一个字符是牌的等级,是 `23456789` 中的一个,第二个字符是牌的花色,是 `CDHS` 中的一个。所有牌都是不同的。
输出格式
对于每个测试用例,输出答案:
打印 $n$ 行。在每一行中,以与输入相同的格式打印两张牌的描述:第一张牌是第一个玩家打出的牌,然后是第二个玩家用来打败它的牌。
如果没有解决方案,则打印一行 `IMPOSSIBLE`。
如果有多个解决方案,则打印其中任何一个。