帝垣琼玉
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

青雀现在正在打帝垣琼玉[1],开拓者在边上看着学习。此时青雀已经立直[2]了,但是type-c发现青雀又在上班时间摸鱼打牌,于是把青雀又抓走了。

现在场地上留下一副牌,开拓者得替青雀打完,但是开拓者不知道听啥,请你给出青雀的听牌[3]。

注1:帝垣琼玉,一种《崩坏 星穹铁道》世界观下的麻将,这里可以把他当成中国麻将。

注2:立直,意味着接下来的牌型已经无法变动,只能等待其他人打出你需要的牌或者你自己摸到你需要的牌。

注3:听牌,最后一张自己摸到或别人打出的牌,使得给你这张牌之后组成某种牌型,后续会解释本题中可以存在的牌型。

接下来是麻将基本教学时间:

麻将本质上就是把一副原本不规律的牌组成某种特定规律。胡牌就是达成规律时候宣告胜利的一种说法。

麻将一共有东,南,西,北,白,中,发,1-9筒,1-9万,1-9条。每种牌都会有4张一样的牌。总共
张牌。

麻将在每个人手中应当有13张牌(不考虑杠)。第十四张牌来源于其他三名玩家打出的牌或者自己摸到的牌。因此组成牌型时会拢共有14张牌。而第十四张牌就是听牌。

接下来介绍本题中需要用到的两种{牌型}:

第一种:

  • 33332:牌型中划分成五个部分,其中2代表一对相同的牌,3代表三个相同的牌或者三个组成顺子的牌。其中,字牌(如东,白等)是不能组成顺子的。(注:顺子是要求数字连续,且均为"条"/"筒"/"万"的三张牌,如:三万,四万,五万。)
  • 例:三万,四万,五万,三万,三万,三万,四条,五条,六条,九筒,九筒,九筒,白,白。

第二种:

  • 七对子:手里+听牌能够组成七对两两相同的牌。
  • 例:一筒,一筒,四筒,四筒,东风,东风,南风,南风,白,白,发,发,发,发

输入描述:

输入一行十三个字符串,分别如下代表:

  • bai -> 白
  • zhong -> 中
  • fa -> 发
  • dong -> 东
  • nan -> 南
  • xi -> 西
  • bei -> 北
  • 1tiao -> 一条
  • 1tong -> 一筒
  • 1wan -> 一万
其中,数字的条,筒,万均用阿拉伯数字+拼音tiao,tong,wan表示(中间不带空格)。

输出描述:

一个数字 n ,代表可能听的牌的数量。

接下来 n 行,按照如下规则依次输出可能听的牌。

1. 东南西北白中发七张牌按照字典序依次输出。

2. 从1-9依次输出k条。

3. 从1-9依次输出k筒。

4. 从1-9依次输出k万。

注意,输出个内容依然按照输入格式所示,这里不再赘述。

示例1

输入

复制
dong dong dong zhong zhong zhong bai bai bai fa fa fa nan

输出

复制
1
nan
示例2

输入

复制
3wan 4wan 5wan 3tiao 3tiao 3tiao 1wan 2wan 3wan 3wan 3wan 4wan 4wan

输出

复制
3
4wan
5wan
6wan