[JSOI2007]麻将
麻将是中国传统的娱乐工具之一。传统麻将牌可分为字牌与序数牌。字牌包括东、南、西、北、中、发、白共 种;序数牌分为条子、饼子、万子 种花色,每种花色均有序数为 至 的牌。
通常,一组和牌由 张牌组成,其中 张完全相同的牌组成对子,其余 张牌被分为 组,每组 张牌。每组牌必须是以下两种类型之一:
- 顺子: 张花色相同且序数连续的序数牌;
- 刻子: 张完全相同的牌。
一组听牌由 张牌组成,且再加入某一张牌后可以构成和牌。加入的这张牌称为等待牌。
本题考虑一种特殊的麻将:没有字牌,且只有一种花色;牌的序数范围为 至 ,每种牌的数量没有限制。
在这种麻将中,一组和牌由 张牌组成,其中 张完全相同的牌组成对子,其余 张牌被分为 组,每组均为顺子或刻子。
现给出一组包含 张牌的牌组,请判断它是否为听牌。若是,请输出所有可能的等待牌。
输入格式
输入共两行。
第一行包含两个以空格分隔的整数 和 。
第二行包含 个以空格分隔的整数,表示牌组中每张牌的序数。
输出格式
输出一行。
如果给定牌组是听牌,按从小到大的顺序输出所有可能的等待牌序数,相邻序数之间用一个空格分隔。
如果给定牌组不是听牌,输出 NO。
样例输入
9 4
1 1 2 2 3 3 5 5 5 7 8 8 8
样例输出
6 7 9
数据范围
- ;
- ;
- 输入牌组包含 张牌;
- 每张牌的序数均在 至 的范围内。
来源与许可
本题为 JSOI 2007 试题「麻将」,题面与测试数据整理自 BZOJ 1028。
样例 1
输入
9 4
1 1 2 2 3 3 5 5 5 7 8 8 8
输出
6 7 9