고장 난 7세그먼트 디스플레이

시간 제한5초메모리 제한512 MB

요약
시작 숫자와 고장 난 조각을 모르는 채 기록한 연속 표시에서 다음 표시를 구하고, 가능한 해석이 서로 다르면 ERROR를 출력합니다.
난이도

보통10점 중 5점

유형
완전 탐색, 비트 연산
정답자
아직 제출이 없습니다

문제

톰은 7세그먼트 디스플레이 하나로 스톱워치를 만들었다. 그런데 몇몇 세그먼트가 고장 나서 아예 켜지지 않는다. 고장 나지 않은 세그먼트는 숫자가 요구하는 대로 정확히 켜진다. 카운터 자체는 멀쩡해서 디스플레이는 한 자리 숫자를 1씩 줄여 가며 표시하고, 0 다음에는 다시 9로 돌아가 계속 세어 내려간다.

일곱 개의 세그먼트에는 A부터 G까지 이름이 붙어 있다.

  • A는 위쪽 가로 막대다.
  • B는 오른쪽 위 세로 막대다.
  • C는 오른쪽 아래 세로 막대다.
  • D는 아래쪽 가로 막대다.
  • E는 왼쪽 아래 세로 막대다.
  • F는 왼쪽 위 세로 막대다.
  • G는 가운데 가로 막대다.

디스플레이의 상태는 0과 1로 이루어진 길이 7인 문자열로 적는다. 왼쪽부터 차례로 세그먼트 A, B, C, D, E, F, G를 뜻하고, 1은 그 세그먼트가 켜져 있다는 뜻이다. 고장 난 세그먼트가 하나도 없다면 열 개의 숫자는 다음 상태로 보인다.

숫자상태
01111110
10110000
21101101
31111001
40110011
51011011
61011111
71110000
81111111
91111011

실제로 보이는 상태는 숫자의 원래 모양에서 고장 난 세그먼트를 모두 꺼 놓은 것이다.

톰은 연속한 상태 NN개를 적어 두었다. 기록이 어느 숫자에서 시작하는지도 모르고, 어떤 세그먼트가 고장 났는지도 모른다. 기록 바로 다음에 디스플레이가 보여 줄 상태를 구하라. 서로 다른 두 상태가 모두 기록과 들어맞는다면 기록만으로는 다음 상태가 정해지지 않는다.

예를 들어 기록이 1101100, 0110000, 1111110이라면 들어맞는 해석은 세그먼트 G가 고장 났고 디스플레이가 2, 1, 0을 보여 준 경우 하나뿐이다. 다음 숫자는 9이고 9의 모양은 1111011이므로, G가 꺼진 채로 1111010이 보인다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 다음 TT개의 줄에는 테스트 케이스가 한 줄에 하나씩 주어진다. 각 줄에는 기록한 상태의 개수 NN과 상태 NN개가 공백 하나로 구분되어 주어진다. 각 상태는 0과 1로 이루어진 길이 7인 문자열이다.

  • 1≤T≤20001 \le T \le 2000
  • 1≤N≤51 \le N \le 5
  • 입력에 주어지는 기록은 모두 디스플레이가 실제로 만들어 낼 수 있는 기록이다. 즉 시작 숫자와 고장 난 세그먼트 집합을 적어도 한 가지는 고를 수 있다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호다. 기록으로 다음 상태가 하나로 정해지면 yy는 그 상태를 입력과 같은 길이 7인 문자열로 쓰고, 그렇지 않으면 yy는 ERROR!로 쓴다.

예제1

  1. 예제 1

    입력
    4
    1 1111111
    2 0000000 0001010
    3 0100000 0000111 0000011
    5 1011011 1011111 1010000 1011111 1011011
    
    예상 출력
    Case #1: 1110000
    Case #2: ERROR!
    Case #3: 0100011
    Case #4: 0010011