Vous regardez un groupe d'enfants s'amuser en jouant une partie amicale de Quartets. À un moment, vous commencez à soupçonner certains de tricher. Cela ne semble absolument pas déranger les enfants eux-mêmes. Au contraire, ils s'en amusent encore plus, surtout lorsque quelqu'un est pris à tricher. En tant que programmeur, vous réfléchissez aussitôt à des moyens de détecter la triche simplement en observant leur partie.
Quartets est un jeu de cartes à quatre joueurs utilisant un paquet de $32$ cartes réparties en $8$ familles de $4$ cartes. Les vraies cartes comportent souvent des images éducatives, permettant d'apprendre non seulement des objets individuels, mais aussi leur classification. Par exemple, les cartes peuvent représenter des animaux et les familles correspondre à différents groupes d'animaux (mammifères, reptiles, etc.).
Quatre cartes d'une famille, provenant d'un jeu allemand de Quartets de Wilhelm Busch, via Wikimedia Commons, domaine public.
Au début, chaque joueur reçoit $8$ cartes, et le joueur $1$ commence son tour. À chaque tour, un joueur demande à un autre s'il possède une carte précise. Si le joueur interrogé la possède, il doit la donner au demandeur, qui poursuit son tour en demandant une autre carte à n'importe quel joueur. Sinon, le demandeur perd son tour et le joueur interrogé commence le sien. Une règle importante exige que le demandeur possède déjà au moins une carte de la même famille que la carte demandée.
Si, pendant son tour, un joueur possède une famille complète (« quartet »), il peut la montrer aux autres, la mettre de côté et gagner un point. Les quatre cartes sont définitivement retirées de la partie. Si, à un moment quelconque, un joueur n'a plus de cartes, il quitte la partie. Si c'était son tour, il passe au joueur suivant dans l'ordre $1$-$2$-$3$-$4$-$1$-$\ldots$ qui possède encore des cartes. Si personne n'a de cartes, la partie se termine et le joueur ayant le plus de points gagne.
Il est interdit de demander une carte retirée de la partie ou de demander une carte à un joueur ayant quitté la partie.
La triche est envisageable dans deux situations où un joueur affirme à tort posséder (ou ne pas posséder) une carte. Plus précisément, il y a triche si
un joueur demande une carte alors qu'il ne possède aucune carte de la famille correspondante, ou
un joueur interrogé affirme ne pas posséder la carte demandée alors qu'il la possède.
Bien entendu, la triche est souvent découverte plus tard. Théoriquement, un adversaire attentif peut finir par découvrir toute triche, puisque toutes les cartes finissent par être révélées avant la fin de la partie.
Demander une carte que le joueur interrogé ne peut absolument pas posséder (par exemple parce qu'elle est dans la main du demandeur) n'est pas particulièrement malin, mais ne constitue pas en soi une triche.
Entrée
La première ligne contient un entier $n$ ($1 \le n \le 1000$), le nombre d'actions consécutives d'une partie de Quartets à partir de son début. Les $n$ lignes suivantes décrivent chacune une action. Chaque action occupe une ligne et peut être l'une des suivantes :
x A y sk yes— le joueur $x$ demande la carte $sk$ au joueur $y$, et celui-ci la donne au joueur $x$ ;x A y sk no— le joueur $x$ demande la carte $sk$ au joueur $y$, qui affirme ne pas l'avoir et commence son tour ;x Q s— le joueur $x$ met de côté la famille complète $s$.
Dans toutes les actions, $x$ et $y$ ($1 \le x,y \le 4$, $x \ne y$) sont des entiers désignant les joueurs ; $s$ ($1 \le s \le 8$) est un entier à un chiffre désignant une famille ; et $k \in \{\mathrm{A},\mathrm{B},\mathrm{C},\mathrm{D}\}$ est un caractère identifiant les quatre cartes d'une famille. Ainsi, les cartes $sk$ portent les étiquettes 1A, 1B, 1C, 1D, 2A, 2B, …, 8C, 8D. Les quatre cartes ayant le même premier chiffre forment une famille.
La séquence donnée décrit une partie valide entre quatre joueurs. Autrement dit, hormis les deux formes possibles de triche décrites, toutes les actions respectent toutes les règles.
Sortie
S'il existe une distribution initiale possible des cartes telle que la séquence corresponde à une partie (éventuellement partielle) où tous respectent les règles, affichez yes. Sinon, affichez no, puis, sur la ligne suivante, le numéro de la première action après laquelle il est certain qu'un joueur a triché. Les actions sont numérotées consécutivement à partir de $1$, et les actions consistant à mettre une famille de côté sont également comptées.
Exemples
Entrée 1
4 1 A 2 3C no 2 A 3 3A yes 2 A 4 3D yes 2 A 1 3C no
Sortie 1
no 4
Remarque
Les joueurs $1$ et $2$ affirment tous deux ne pas avoir 3C, et aucun n'avait 3A ni 3D. L'un d'eux a donc menti en affirmant ne pas avoir 3C, ou a demandé 3C sans posséder 3B (la seule carte restante de la famille $3$).
Entrée 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
Sortie 2
yes