보물 상자 열기

다른 상자에서 얻은 일회용 열쇠로 모든 상자를 여는 사전순으로 가장 작은 순서를 찾고 불가능하면 IMPOSSIBLE을 출력합니다.

보통7그리디그래프백트래킹아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

오래된 지도를 따라가다 해적 래리가 숨겨 둔 보물 창고를 찾아냈다.

보물 창고에는 잠긴 상자가 NN개 있고, 상자마다 정해진 종류의 열쇠로만 열린다. 열쇠는 한 번 쓰면 사라져서 다시 쓸 수 없다. 상자 안에는 보물이 들어 있고, 다른 상자를 여는 열쇠가 함께 들어 있기도 하다. 한 상자에 같은 종류의 열쇠가 여러 개 들어 있을 수도 있고, 열쇠는 몇 개든 들고 다닐 수 있다.

처음에 열쇠를 적어도 하나 가지고 있고, 어느 상자에 어떤 열쇠가 들어 있는지는 지도에 적혀 있다. 이 정보로 상자를 모두 여는 순서를 정하자.

예를 들어 상자가 네 개이고 처음에 1번 종류 열쇠를 하나만 가지고 있다고 하자.

상자 번호여는 데 필요한 열쇠 종류상자 안의 열쇠 종류
11없음
211, 3
32없음
432

이때 2, 1, 4, 3 순서로 열면 네 상자를 모두 열 수 있다. 1번 상자를 먼저 열면 하나뿐인 열쇠를 써 버려서 더는 아무 상자도 열지 못한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫째 줄에는 양의 정수 KKNN이 주어진다. KK는 처음에 가지고 있는 열쇠의 개수, NN은 열어야 하는 상자의 개수다.

둘째 줄에는 처음에 가지고 있는 열쇠의 종류를 나타내는 정수 KK개가 주어진다.

이어지는 NN개의 줄 가운데 ii번째 줄은 ii번 상자를 설명한다. 각 줄은 정수 tit_imim_i로 시작한다. tit_i는 그 상자를 여는 데 필요한 열쇠의 종류, mim_i는 그 상자 안에 든 열쇠의 개수다. 그 뒤에 상자 안에 든 열쇠의 종류를 나타내는 정수 mim_i개가 이어진다.

제한은 다음과 같다.

  • 1T251 \le T \le 25
  • 1K1 \le K
  • 1N2001 \le N \le 200
  • 모든 열쇠의 종류는 11 이상 200200 이하의 정수다.
  • 한 테스트 케이스에 나오는 열쇠는 처음에 가진 것과 상자 안에 든 것을 합쳐 400개 이하다.

출력

각 테스트 케이스마다 한 줄에 Case #x: C1 C2 ... CN 형식으로 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, CiC_iii번째로 여는 상자의 번호다. 상자 번호는 1부터 시작한다.

상자를 모두 여는 순서가 여러 가지면 사전순으로 가장 앞서는 것을 출력한다. 즉 C1C_1을 가능한 한 작게 하고, 그런 순서가 여럿이면 그중에서 C2C_2를 가능한 한 작게 하는 식으로 정한다.

상자를 모두 여는 순서가 없으면 그 줄에 Case #x: IMPOSSIBLE을 출력한다.