Automatic Chemical Manufacturing expérimente un procédé appelé autoassemblage. Dans ce procédé, des molécules ayant une affinité naturelle les unes pour les autres sont mélangées dans une solution et peuvent s’assembler spontanément en structures plus grandes. Mais il y a un problème : parfois les molécules s’assemblent en une structure de taille non bornée, ce qui encrasse les machines.
Vous devez écrire un programme qui détermine si une collection donnée de molécules peut être assemblée en une structure de taille non bornée. Vous devez faire deux hypothèses simplificatrices : 1) le problème se limite à deux dimensions, et 2) chaque molécule de la collection est représentée par un carré. Les quatre côtés du carré représentent les surfaces sur lesquelles la molécule peut se connecter à d’autres molécules compatibles.
Dans chaque cas de test, vous recevrez un ensemble de descriptions de molécules. Chaque type de molécule est décrit par quatre étiquettes de connexion de deux caractères, indiquant comment ses côtés peuvent se connecter aux côtés d’autres molécules. Il existe deux types d’étiquettes de connexion :
Une lettre majuscule (
A, ...,Z) suivie de+ou de-. Deux côtés sont compatibles si leurs étiquettes ont la même lettre mais des signes différents. Par exemple,A+est compatible avecA-, mais pas avecA+ni avecB-.Deux chiffres zéro
00. Un côté portant cette étiquette n’est compatible avec aucun côté (pas même avec un autre côté étiqueté00).
Supposez qu’il existe une quantité illimitée de molécules de chaque type, qui peuvent être tournées et réfléchies. Lorsque les molécules s’assemblent en structures plus grandes, les côtés de deux molécules ne peuvent être adjacents que s’ils sont compatibles. Il est permis qu’un côté, quelle que soit son étiquette de connexion, ne soit connecté à rien (sans molécule adjacente sur ce côté).
La figure A.1 montre un exemple de trois types de molécules et d’une structure de taille bornée pouvant être assemblée à partir de celles-ci (cet ensemble de molécules permet aussi d’autres structures bornées).
Figure A.1 : Illustration de l’entrée de l’exemple 1.
Entrée
L’entrée contient un unique cas de test. Un cas de test comporte deux lignes. La première contient un entier $n$ ($1 \le n \le 40\,000$), indiquant le nombre de types de molécules. La deuxième ligne contient $n$ chaînes de huit caractères, décrivant chacune un type de molécule, séparées par une seule espace. Chaque chaîne consiste en quatre étiquettes de connexion de deux caractères représentant les quatre côtés de la molécule dans le sens horaire.
Sortie
Affichez le mot unbounded si l’ensemble des types de molécules peut engendrer une structure de taille non bornée. Sinon, affichez le mot bounded.
Exemples
Entrée 1
3 A+00A+A+ 00B+D+A- B-C+00C+
Sortie 1
bounded
Entrée 2
1 K+K-Q+Q-
Sortie 2
unbounded