자기 조립

아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

어느 자동화 화학 실험실에서 자기 조립(self-assembly)이라는 공정을 실험하고 있다. 서로 자연스럽게 결합하려는 성질을 가진 분자들을 용액에 섞어 두면, 분자들이 스스로 더 큰 구조로 결합한다. 그런데 한 가지 문제가 있다. 때때로 분자들이 크기가 무한히 커지는 구조로 결합해 장비를 망가뜨린다.

주어진 분자 집합이 무한한 크기의 구조로 조립될 수 있는지 판정하는 프로그램을 작성하라. 두 가지 단순화 가정을 둔다. (1) 모든 과정은 2차원에서 일어난다. (2) 각 분자는 정사각형이다. 정사각형의 네 변은 그 분자가 호환되는 다른 분자와 결합할 수 있는 면을 나타낸다.

각 분자 종류는 네 변을 나타내는 네 개의 두 글자짜리 커넥터 라벨로 설명된다. 커넥터 라벨에는 두 종류가 있다.

  • 대문자 한 글자(A부터 Z)와 그 뒤의 + 또는 -. 두 변은 라벨의 글자가 같고 부호가 서로 다를 때 호환된다. 예를 들어 A+A-와 호환되지만 A+B-와는 호환되지 않는다.
  • 숫자 00. 이 라벨이 붙은 변은 어떤 변과도 호환되지 않는다. 00끼리도 호환되지 않는다.

각 분자 종류는 무한히 공급되며, 분자는 자유롭게 회전하거나 뒤집을 수 있다. 분자들이 더 큰 구조로 결합할 때, 두 변은 서로 호환될 때에만 맞닿을 수 있다. 어떤 변이든 라벨과 관계없이 아무것도 붙지 않은 채로, 즉 그 쪽에 이웃 분자가 없는 채로 둘 수 있다.

예를 들어, 세 가지 분자 종류로 이루어진 어떤 집합에서는 크기가 유한한 구조만 만들 수 있다. 같은 집합에서 서로 다른 여러 유한 구조가 나올 수도 있다.

입력

입력은 하나의 테스트 케이스이며 두 줄로 주어진다. 첫째 줄에는 분자 종류의 수를 나타내는 정수 nn (1n400001 \le n \le 40000)이 주어진다. 둘째 줄에는 각각 하나의 분자 종류를 설명하는 여덟 글자짜리 문자열 nn개가 공백 하나로 구분되어 주어진다. 각 문자열은 분자의 네 변을 시계 방향으로 나열한 네 개의 두 글자짜리 커넥터 라벨로 이루어진다.

출력

분자 종류의 집합으로 무한한 크기의 구조를 만들 수 있으면 unbounded를, 그렇지 않으면 bounded를 한 단어로 출력한다.