小 A 和爸爸妈妈乘火车一起外出旅游。长途旅行让大家感觉有些枯燥乏味,小 A 提出打扑克的建议,得到了爸爸妈妈的一致响应。翻遍行李大家才发现,出门忘记带扑克了。
聪明的小 A 拿出自己带的空白卡纸,开始制作扑克,普通的扑克大家已经玩过很多次了,小 A 决定制作一副不一样的扑克,并给这副扑克牌取了一个响亮的名字:“火车扑克”。这副扑克牌中,每张牌的数值在 1 \sim N 的范围内,同样数值的牌可能会有多张。
小 A 指定的赢牌规则为:如果在某个时刻,玩家手上有 3 \times M + 2 张牌,且这 3 \times M + 2 张牌中,有 2 张牌是 1 个对子(2 张牌数值相同),其余 3 \times M 张牌平均分为 M 组,每组的 3 张牌恰好是顺子(3 张牌排序后两两差值为 1,比如:1 2 3、10 11 12等)或者 3 张牌完全相同(比如:2 2 2、10 10 10 等),那么该玩家赢牌。
小 A 发明了游戏中的一个名词:关键牌。关键牌的含义是:如果玩家手上有 3 \times M +1 张牌,再拿到某张牌 X 玩家就可以赢牌,那么这张牌 X 就是关键牌。
现给出 3 \times M + 1 张牌,请编程计算出,关键牌 X 可能的值有哪些?
第 1 行输入两个整数 N,M。
第 2 行输入 3 \times M + 1 个整数,代表玩家手上的牌,每张牌的数值都在 1 \sim N 的范围内。
请按照从小到大的顺序输出若干个数,代表关键牌 X 可能的数值。如果根据玩家手上的牌,找不到任何关键牌,请输出 NO
。
9 4 3 3 5 5 4 4 7 7 7 9 1 1 1
8 9
9 4 8 8 8 2 3 4 5 6 9 1 7 7 7
7 8 9
18 6 1 1 2 2 5 5 5 8 9 12 13 15 16 16 17 17 18 18 18
NO
如果再拿到值为 8 的牌,那么,可以将牌分为: 一对 7、3 4 5、3 4 5、7 8 9,符合题目的要求。
同理,如果再拿到值为 9 的牌,也能符合题目的赢牌要求。
对于 40\% 的数据,9 \le N \le 20,4 \le M \le 30。
对于 100\% 的数据,9 \le N \le 400,4 \le M \le 1000。