在一个满月的夜晚,当时钟敲响午夜,五个朋友发现自己准备玩一场像那个夜晚一样神秘的游戏。
他们围坐成一个圆圈,按顺时针顺序排列:Igor、Lea、Marino、Sonja 和 Viktor。游戏包含 $N$ 个回合。第一回合由 Sonja 开始,后续每个回合由上一回合的获胜者开始。
每个玩家手中持有 $N$ 张牌。所有牌都是无色的,上面印有 1 到 9 之间的自然数。当玩家出牌时,他们会为该牌选择一种颜色。他们可以选择四种颜色(红、蓝、黄、绿)中的一种,前提是该牌(数字与颜色的组合)此前尚未在游戏中被出过。在下文中,例如“出一张蓝牌”指的是出牌并声明其为蓝色的过程。
在每一回合中,玩家按顺时针顺序每人出一张牌,直到轮到该回合的起始玩家,即直到每位玩家都出了一张牌。该回合出的第一张牌决定了所谓的“回合颜色”,后续所有玩家都必须出该颜色的牌。如果任何玩家未能出当前回合颜色的牌,则假定该玩家手中没有该颜色的牌——并且在游戏的剩余部分中,禁止该玩家出该颜色的牌。
每回合的获胜者是: 出红色牌且数字最大的那个人。 如果没有出红色牌,则为出该回合颜色且数字最大的人。
有时,玩家会做出不该做的动作:要么出了一张已经出过的牌,要么出了一种他们之前声明自己不再拥有的颜色的牌。这种出牌被称为“悖论”(克罗地亚语:“paradoks”)。当悖论发生时,该次出牌在计算回合获胜者和后续游戏时会被完全忽略。例如,如果一张牌第一次被出时就构成了悖论,那么在游戏的剩余部分中,它被视为尚未被出过。保证每回合的第一个玩家在该回合中永远不会制造悖论。
我们的主角们已经很久没有见面,也没有密切关注游戏,所以他们请求你的帮助。编写一个程序,按回合顺序输出已出的牌,统计发生了多少次悖论,并按发生顺序将它们列出。对于每个悖论,打印它发生的轮次以及导致该悖论的玩家姓名。
输入格式
输入的第一行包含一个自然数 $N$ ($1 \le N \le 10$),表示回合数。
接下来的 $N$ 行输入中,每行有 5 个单词,每个单词 2 个字符长,表示该回合中出的牌,按出牌顺序排列。(注意:每回合的第一个玩家不一定是同一个。)
每个单词的第一个字符表示玩家所出牌的颜色,将是以下字母之一:'C' - 红色,'P' - 蓝色,'Y' - 黄色,'Z' - 绿色。每个单词的第二个字符将是 1 到 9 之间的自然数(包含 1 和 9),表示牌上的数字。
例如,单词 'Y5' 表示一张数字为 5 的黄色牌。
输出格式
打印一个数字 $a$,表示发生的悖论总数。
在接下来的 $a$ 行中,对于每个悖论,打印发生的回合数和导致该悖论的玩家姓名(大写字母)。
悖论应按其发生的顺序打印。
子任务
| 子任务 | 分值 | 约束 |
|---|---|---|
| 1 | 10 | Sonja 将赢得所有回合,且所有悖论均由重复出牌引起。 |
| 2 | 10 | 所有发生的悖论均由重复出牌引起。 |
| 3 | 30 | 无额外约束。 |
样例
输入 1
4 Y5 Z3 Y6 C2 Y1 Z4 Z7 Z2 Y2 P3 Z6 Z7 Z1 Y2 C2 P6 P8 P8 Z7 Y9
输出 1
6 2 VIKTOR 3 SONJA 3 LEA 4 VIKTOR 4 IGOR 4 LEA
输入 2
3 P1 Y9 Z5 Y1 Z5 P5 Y7 Z3 Y8 P1 C6 Y8 P5 Z1 Z8
输出 2
4 1 MARINO 2 MARINO 3 VIKTOR 3 IGOR
输入 3
1 Y4 P9 Y8 Z5 Z3
输出 3
0
说明
第一个样例的说明: 游戏过程如下图所示(在下一页)。
在第 1 回合中,Viktor 和 Lea 没有出黄牌(回合颜色),因此假定他们手中没有剩余的黄牌,并且在游戏的剩余部分中被禁止声明任何牌为黄色。这就是 Viktor 在第 2 回合和 Lea 在最后一回合产生悖论的原因。
注意:在第 2 回合中,由于悖论,Viktor 的动作被忽略,我们不会得出任何进一步的结论。此外,牌 Y2 不被视为已出,这就是为什么 Igor 在第 3 回合出该牌时没有产生悖论。
第 3 回合和第 4 回合中的所有悖论(最后一个除外)都是因为出了一张在游戏早期已经出过的牌。