플라톤은 우리가 지각하는 것이 실재의 그림자에 불과하다고 믿었다. 최근의 고고학 발굴은 이 믿음이 플라톤이 어린 시절 정교하게 설계된 블록을 가지고 놀던 데에서 비롯되었을 수 있음을 시사한다. 이 블록들은 흥미로운 성질을 가지고 있어서, 어느 한 면을 광원 쪽으로 향하게 들면 글자, 숫자, 도형, 무늬 등의 그림자를 드리운다. 한 꼭짓점에서 만나는 세 면은 서로 다른 세 개의 그림자 무늬에 대응할 수 있으며, 마주 보는 면은 당연히 서로 거울상인 그림자를 드리운다.
각 블록은 작은 단위 정육면체들을 서로 붙여 하나의 연결된 물체로 만든 것이다. 예를 들어, 아래 그림은 글자 "E", "G", "B"의 그림자를 드리울 수 있는 블록의 내부 구조를 층별로 보여 준다.

원래 블록 세트의 일부만 발굴되었지만, 호기심 많은 과학자들은 어떤 그림자 조합이 가능한지 알고 싶어 한다. 여러분의 프로그램이 이들을 도울 것이다. 프로그램은 세 개의 그림자 무늬로 이루어진 그룹들을 입력받아, 각 그룹에 대해 정확히 그 세 그림자를 드리우는 하나의 입체를 만들 수 있는지를 판정한다.
입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합은 하나의 차원과 세 개의 그림자 무늬로 구성된다. 데이터 집합의 첫 줄에는 무늬의 크기를 나타내는 양의 정수 $n$ ($1 \le n \le 20$)이 주어진다. 그 다음에는 $3n$개의 줄이 이어지며, 각 줄은 "X"와 "-"로 이루어진 길이 $n$의 문자열이다. 연속한 $n$개의 줄이 하나의 무늬를 이룬다. "X"는 완성된 입체가 반드시 그림자를 드리워야 하는 위치를, "-"는 빛이 통과해야 하는 위치를 나타낸다. 모든 입력 무늬는 각 변마다 적어도 하나의 "X"를 포함한다고 가정해도 된다. 입력은 차원 자리에 0 하나만 있는 줄로 끝난다.
각 데이터 집합에 대해 데이터 집합 번호와 함께 다음 두 메시지 중 하나를 출력한다.
Valid set of patterns
Impossible combination
$i$번째 데이터 집합에 대한 답은 Data set i: Valid set of patterns 또는 Data set i: Impossible combination 형식으로 한 줄에 출력한다(번호 $i$는 1부터 시작한다). 어떤 무늬 집합이 유효하려면, 단위 정육면체들을 면끼리 붙여서 세 입력 무늬 각각의 그림자를 드리우는 하나의 연결된 입체를 만들 수 있어야 한다.