麻将,是一种源自中国的棋牌类游戏。Sheauhaw 打麻将总是赢不了,说是脑子不好用,所以请你帮他计算。
下面简单介绍麻将的规则:
麻将一共有三种数牌,分别是万(m),索(s),饼(p)。每种数牌的数字可以是1至9, 于是每张牌都可以用数字+类型来表示. 例如九万可以用9m表示,一饼可以用1p表示。除数牌外,还有字牌,共有东、南、西、北、白、发、中七种,分别用1z,2z,...,7z来表示。
顺子是三张种类相同、数字连续的数牌所组成的组合。刻子是三张相同的牌所组成的组合。面子就是顺子和刻子的统称。两张相同的牌称为一对。
四个面子和一对牌组成的14张牌称为和牌型。给定13张牌,如果存在一张牌(即使这种牌全部在这13张牌中),使得当这张牌加入到这13张牌后,这14张牌组成了和牌型,则称这13张牌听第14张牌。
例如:1m2m3m4m5m6m7m8m9m1z1z4z4z所组成的13张牌,当加入1z时会组成和牌型,此时就说听1z。
现在你有14张牌,需要打出一张牌。请你计算:打出哪些牌可以听牌,分别听哪些牌?如果已经组成和牌型,则不需要打出牌了,你需要输出 Tsumo!.
Tsumo!
为了简化题意,本题不考虑七对子、国士无双、十三不搭等等特殊和牌型,也不需要考虑允许胡牌的最少番数,你需要且仅可以参考题面中对于和牌型的描述。
第一行一个数字 , 表示数据组数。
之后每组数据一行字符串,表示手中的14张牌。输入保证长度为28,数字和小写英文字母交替出现。
对于每组数据:
如果输入的14张牌已经是和牌型,输出一行Tsumo!. 否则:
第一行输出 ,表示可以打出的 种牌。之后 行,首先输出打出的牌,之后输出打出这张牌所听的牌。
如果有多种可选的打出牌,请按照 1m,2m,...,9m,1s,2s,...,9s,1p,2p,...,9p,1z,2z,...,7z 的顺序输出。
如果打出后听多种牌,请按照 1m,2m,...,9m,1s,2s,...,9s,1p,2p,...,9p,1z,2z,...,7z 的顺序输出。
3 1m2m3m4m5m6m7m8m9m1p1z1z4z4z 1m2m3m4m5m6m7m8m9m1z1z1z4z4z 1m1m1m2m3m4m5m6m7m8m9m9m9m1z
1 1p 1z 4z Tsumo! 4 2m 1z 5m 1z 8m 1z 1z 1m 2m 3m 4m 5m 6m 7m 8m 9m