#4023. 打麻将

打麻将

题目描述

春节快到了,家庭聚会时要打麻将,你能帮助小z判断是否胡牌吗?

一张麻将牌由花色和点数组成,为了简化题意,我们只考虑种花色和种点数组成的麻将牌,例如下图所示。

  • 万子​:1万至9(1m,2m,...,9m)1万至9万(1m,2m,...,9m),每种牌有 44 张,共 3636 张牌。
  • 筒子​(或称饼):1筒至9(1p,2p,...,9p)1筒至9筒(1p,2p,...,9p),每种牌有 44 张,共 3636 张牌。
  • ​​条子​(或称索子):1条至9(1s,2s,...,9s)1条至9条(1s,2s,...,9s),每种牌有 44 张,共 3636 张牌。

在本题当中我们用一个长度为 22 的字符串表示一张麻将牌:1m表示一万,9m表示九万,6p表示六筒,3s表示三条...

image

手里的牌可以用一个长度为 28 的字符串表示,按照前后顺序分别表示 1414 张麻将牌。

接下来我们用一个简单的公式来总结判断胡牌的方法:n*AAA+m*ABC+DD 。这个公式分为三个部分:

  • AAA​:表示三张花色和点数完全相同的牌,例如三个 8p 或者三个 9s
  • ABC​:即连续的三张同花色牌,如 3m 4m 5m,是顺子的构成部分。
  • DD​:指两个花色和点数相同的牌,如 1s 1s,主要用来形成对子。

其中,nm 是整数,分别代表 AAAABC 的数量,为了简化题意,我们认为 有1个对子,剩下的 12 张牌组成 4 组(AAA 或者ABC)即可。

现在小z想知道手里的 1414 张牌是否胡牌了,请你帮他看看,输出 Yes 或者 No 即可。

输入格式

本题有多组测试数据。

输入的第一行包含一个整数 TT ,表示数据组数。

接下来 TT 行,每行一个长度为 2828 的字符串,表示小z手里的 1414 张牌。

输出格式

输出 TT 行,每行 Yes 或者 No 表示每组数据的判断结果。

5
1m1m1m2p2p2p3s3s3s4m5m6m9s9s
8p1m2m3m6m6m6m3p4p5p7s8s9s8p
1s1s1s2s2s2s3s3s3s7s8s9s6s6s
1m2m2m3m3m4m6p6p6p6p7p8p9m9m
1m2m2m3m3m4m6p6p6p6p7p8p9m9s
Yes
Yes
Yes
Yes
No

提示

样例数据解释:

1m1m1m2p2p2p3s3s3s4m5m6m9s9s9s9s+1m1m1m+2p2p2p+3s3s3s+4m5m6m

1m2m2m3m3m4m6p6p6p6p7p8p9m9m9m9m+1m2m3m+2m3m4m+6p6p6p+6p7p8p

数据范围:

对于 3030%的数据,手里的牌只有一种花色。

对于 6060%的数据,手里的牌不超过两种花色。

对于 100100%的数据,T104T≤10^4,手里的牌不超过三种花色。