荣!断幺九,一番,1000点!
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

                  
        八木唯已经六倍役满听牌、五倍役满拍桌啦,只会断幺九的一姬决定对攻!

        几回合后,一姬发出了气死人的声音:荣!断幺九,一番,1000点!成功用一番的断幺九截胡了六倍役满。

        你需要帮一姬看看,她是否胡了断幺九。

        注意:由于八木唯已经杠了四次,根据规则一姬不能再杠,所以一姬不可以有杠,但是相同的四张牌可以拆开当顺或刻用。

        给出一姬的牌,你需要判断是否满足断幺九胡牌。

输入描述:

第一行输入一个正整数 T(1 \le T \le 1000)

接下来 T 行,每行输入一个长度为28的字符串表示一姬拥有的牌。输入保证这些牌都是合法的。

输出描述:

输出 T 行,每行输出YES表示一姬断幺九胡牌,或者输出NO表示一姬没有断幺九胡牌。
示例1

输入

复制
10
2s3s4s6s7s8s3m4m5m4p5p6p8p8p
1s1s1s2s3s4s5s5s6s7s8s9s9s9s
1s1s1s9s9s9s1m1m1m1p1p1p9p9p
1s9s1m9m1p9p1z2z3z4z5z6z7z7z
2s2s4s4s3m3m5m5m7m7m6p6p8p8p
2s2s3s3s4s4s5s5s6s6s7s7s8s8s
1s1s1s9s9s5z5z5z6z6z6z7z7z7z
2s2s2s3s3s3s4s4s4s6s6s6s8s8s
2s2s2s2s3s3s3s3s4s4s4s4s8s8s
2s3s4s5s2m3m4m5m6m7m8m6s7s8s

输出

复制
YES
NO
NO
NO
NO
YES
NO
YES
YES
NO

备注:

名词解释

        万:麻将牌中的一类,字母表示为m,一到九万表示为1m~9m。

        筒:麻将牌中的一类,字母表示为p,一到九筒表示为1p~9p。

        索:麻将牌中的一类,字母表示为s,一到九索表示为1s~9s。

        字:风和三元的并集,字母表示为z。

        风:麻将中的一类,包括东、南、西、北,表示为1z(东)、2z(南)、3z(西)、4z(北)。

        三元:麻将牌中的一类,包括白、发、中,表示为5z(白)、6z(发)、7z(中)。

        幺九牌:字、一万、九万、一筒、九筒、一条、九条的并集。

        顺:由同一类(不能是字)的连续三张牌组成,比如,1p2p3p(一二三筒)、5s6s7s(五六七索)都是顺,而9m1m2m(九一二万)、1z2z3z(东南西)、5z6z7z(白发中)、1s1s2s(一一二索)、1s2p3m(一索二筒三万)、2p4p6p(二四六筒)不是顺。

        刻:三张相同的牌,比如,3p3p3p(三筒刻)、5z5z5z(白刻)。

        杠:四张相同的牌,比如,3p3p3p3p(三筒杠)、1z1z1z1z(东风杠)。

        暗刻/杠:指组成刻/杠的所有牌都是自己摸上来的。

        雀头:两张相同的牌,比如,6z6z(发雀头)、3s3s(三索雀头)。

        胡牌:牌型的组成是 顺 * a + 刻 * b + 杠 * c + 雀头 ,其中 a + b + c = 4 ,不考虑七对子、国士无双这样的特殊役。

        听牌:只差一张牌就可以胡牌,差的这些牌就是你听的牌。

        胡:别人打出的牌正好是你听的牌之一。

        自摸:你自己摸上来的牌正好是你听的牌之一。

        断幺九:胡牌时所有牌都不是幺九牌。

        字一色:胡牌时所有牌都是字牌。

        大四喜:胡牌时拥有东、南、西、北组成的刻或杠。

        四杠子:胡牌时拥有四个杠。

        四暗刻:胡牌时拥有四个暗刻。

        单骑:听牌时雀头组成不完整,即差一张组成雀头的牌,比如1z1z1z1z2z2z2z2z3z3z3z3z4z4z4z4z7z,此时拥有东、南、西、北四个杠,要胡牌还需要一个对子,即7z(中),此时7z就被称为单骑。

        役满:一些特定的牌型,如字一色、大(小)四喜、大三元、四杠子、绿一色、清老头、国士无双(十三面)、(纯正)九莲宝灯、四暗刻(单骑)、天胡、地和等。