你正在看一群孩子開心地玩一場友善的 Quartets 遊戲。某個時刻,你開始懷疑其中有些孩子可能在作弊。孩子們自己似乎一點也不在意;恰恰相反,這反而讓他們玩得更開心,尤其是有人作弊被抓到的時候。身為程式設計師,你立刻開始思考如何只靠觀察他們的遊戲來偵測作弊。
Quartets 是一種四人紙牌遊戲,使用一副 $32$ 張的牌,分成 $8$ 組,每組 $4$ 張。實際的紙牌通常有具教育意義的圖片,讓玩家不僅認識個別事物,也學習其分類。例如,牌上可能畫著動物,而各組分別對應不同的動物類別(哺乳類、爬蟲類等)。
同組的四張牌,出自 Wilhelm Busch 的德國 Quartets 牌組,經由 Wikimedia Commons 取得,屬於公有領域。
遊戲開始時,每位玩家獲發 $8$ 張牌,由玩家 $1$ 開始回合。每個回合中,玩家向另一位玩家詢問是否持有某張特定的牌。如果被詢問者有那張牌,就必須將牌交給詢問者;詢問者繼續自己的回合,向任意一位玩家索取另一張牌。如果被詢問者沒有那張牌,詢問者的回合結束,改由被詢問者開始回合。一條重要規則是:詢問者必須已經持有至少一張與所索取的牌同組的牌。
如果玩家在自己的回合中持有完整的一組牌(「四張一組」),就可以將這組牌展示給其他玩家,放到一旁,並獲得一分。這四張牌將永久移出本場遊戲。如果任何時刻某位玩家手中沒有牌,該玩家就離開遊戲。如果當時正是其回合,則按照玩家 $1$-$2$-$3$-$4$-$1$-$\ldots$ 的順序,輪到下一位仍有牌的玩家。如果所有玩家都沒有牌,遊戲結束,得分最高的玩家獲勝。
玩家不能索取已經移出遊戲的牌,也不能向已離開遊戲的玩家索取牌。
在 Quartets 遊戲中,有兩種情況可能構成作弊,都是玩家謊稱自己持有(或不持有)某張牌。具體而言,下列情況屬於作弊:
玩家沒有某組的任何牌,卻索取該組的一張牌;或
被詢問的玩家明明持有所索取的牌,卻聲稱沒有。
不言而喻,作弊往往稍後才會被發現。理論上,細心的對手最終能發現任何作弊,因為所有牌最終都會在遊戲結束前的某個時刻公開。
注意,索取一張被詢問者絕不可能持有的牌(例如該牌就在詢問者自己手中),雖然不是聰明的做法,但這個行為本身並不算作弊。
輸入格式
輸入第一行包含一個整數 $n$($1 \le n \le 1000$),表示一場 Quartets 遊戲從開始起連續進行的動作數量。接下來 $n$ 行每行描述一個動作。每個動作占一行,可能是下列其中一種:
x A y sk yes— 玩家 $x$ 向玩家 $y$ 索取牌 $sk$,玩家 $y$ 將該牌交給玩家 $x$;x A y sk no— 玩家 $x$ 向玩家 $y$ 索取牌 $sk$,玩家 $y$ 聲稱沒有該牌,並開始自己的回合;x Q s— 玩家 $x$ 將一組完整的牌 $s$ 放到一旁。
在所有動作中,$x$ 和 $y$($1 \le x,y \le 4$,$x \ne y$)是表示玩家的整數,$s$($1 \le s \le 8$)是一個一位數整數,對應某一組牌,而 $k \in \{\mathrm{A},\mathrm{B},\mathrm{C},\mathrm{D}\}$ 是用來區分同組四張牌的字元。因此,牌 $sk$ 的標籤為 1A、1B、1C、1D、2A、2B、…、8C、8D。第一個數字相同的四張牌構成一組。
給定的序列描述四位玩家進行的一場有效遊戲。也就是說,除了上述兩種可能的作弊方式之外,所有動作都符合全部規則。
輸出格式
如果存在一種可能的初始牌分配,使動作序列對應一場所有玩家都遵守規則的遊戲(可能只是一部分),輸出 yes。否則輸出 no,然後另起一行,輸出第一個在其執行後可以確定必定有玩家作弊的動作編號。動作從 $1$ 開始依序編號,將完整牌組放到一旁的動作也計算在內。
範例
輸入格式 1
4 1 A 2 3C no 2 A 3 3A yes 2 A 4 3D yes 2 A 1 3C no
輸出格式 1
no 4
說明
玩家 $1$ 和 $2$ 都聲稱沒有 3C,而且兩人都沒有 3A 或 3D。因此,其中一人要麼謊稱沒有 3C,要麼在沒有 3B(第 $3$ 組唯一剩下的牌)的情況下索取了 3C。
輸入格式 2
6 1 A 2 3C no 2 A 3 3A yes 2 A 4 3D yes 2 A 1 3B no 1 A 4 5B yes 1 Q 5
輸出格式 2
yes