Cluedo 是 20 世纪 40 年代在英国开发的游戏,是世界上最受欢迎的棋盘游戏之一。游戏的目标是确定是谁谋杀了 Body 先生,使用了什么凶器,以及谋杀发生的地点。游戏使用了一套代表六个人物(标记为 A, B, ..., F)、六种武器(标记为 G, H, ..., L)和九个房间(标记为 M, N, ..., U)的卡片。游戏开始时,随机抽取一张人物卡、一张武器卡和一张房间卡并从牌堆中移除——它们代表了凶手、凶器和案发地点。剩余的 18 张卡片被洗牌并分发给玩家,从玩家 1 开始,然后是她右侧的玩家 2,依此类推。有些玩家最终持有的卡片数量可能比其他人多一张。就本题而言,共有四名玩家,因此玩家 4 右侧的玩家是玩家 1。
游戏的其余部分用于寻找线索。玩家轮流进行,从玩家 1 开始并向右移动。一轮游戏包括提出一个建议(包括一名谋杀嫌疑人、一种武器和一个房间)并询问其他玩家是否有任何证据可以反驳该建议。例如,你可以对另一名玩家说:“我相信凶手是人物 A,使用武器 L,在房间 T。”如果对方持有这些卡片中的恰好一张,该玩家必须向你(且仅向你)展示那张卡片。如果他们持有不止一张此类卡片,他们可以展示其中的任意一张。
提出建议时,你必须首先询问你右侧的人是否有任何证据。如果他们没有,你就继续询问他们右侧的人,依此类推,直到有人提供证据,或者没有人持有你建议中的任何卡片。
很多时候,即使你不是提出建议的人,你也能获得信息。假设在上面的例子中,你是第三名玩家,持有卡片 A 和 T。如果其他人向提出建议的人展示了证据,你就知道那一定是武器卡 L。在玩游戏时,记录建议以及谁在每一轮提供了证据是一项重要的策略。
为了赢得游戏,你必须进行指控,即陈述你对凶手、凶器和房间的最终猜测。在陈述你的指控后,你检查游戏开始时放在一边的三张卡片——如果它们与你的指控相符,你就赢了!不用说,在进行指控之前,你肯定希望百分之百确定你的指控。
这就是你的问题。你是玩家 1。给定分发给你的卡片以及建议和证据的历史记录,你需要决定你距离能够进行指控还有多近。
输入格式
输入以一个整数 $n$ ($1 \le n \le 50$) 开头,表示游戏中提出的建议数量。接下来是一行,包含分发给你的五张卡片,均为范围在 ‘A’...‘U’ 之间的大写字母。剩余的 $n$ 行每行包含一个建议。这些行中的每一行都以三个字符开头,代表建议(按人物、武器、房间的顺序),后面跟着最多三名玩家的响应,从提出建议的玩家右侧的玩家开始。如果玩家没有提供证据,则列出 ‘-’(短横线);否则列出“证据字符”。如果你看到了具体的证据卡(要么是因为你提供了它,要么是因为你是接收证据的人),那么证据字符就是该卡片;否则证据字符为 ‘*’。注意,只有最后一次响应可以是证据字符。所有字符均由空格分隔。输入中仅出现有效的建议/响应序列。
输出格式
显示一个三字符字符串,标识凶手、凶器和房间。如果凶手可以确定,请使用该人物对应的字母;否则使用 ‘?’。对凶器和房间执行相同的操作。
样例
样例输入 1
1 B I P C F A G M - - -
样例输出 1
AGM
样例输入 2
2 A B C D H F G M M F H M - *
样例输出 2
E??
样例输入 3
3 A C M S D B G S - G A H S - - S C J S *
样例输出 3
???