보물 상자 (작은 입력)
시간 제한5초메모리 제한512 MB
상자 안에 든 열쇠로 N개 상자를 모두 여는 가장 작은 사전식 순서를 찾고 불가능하면 IMPOSSIBLE을 출력합니다.
문제
낡은 지도를 따라가다 해적 래리의 비밀 보물 창고를 찾아냈다.
창고에는 잠긴 상자가 개 있고, 각 상자는 정해진 종류의 열쇠 하나로만 열린다. 상자를 여는 데 쓴 열쇠는 사라져서 다시 쓸 수 없다. 상자 안에는 보물이 들어 있고, 다른 상자를 여는 열쇠가 함께 들어 있을 수도 있다. 한 상자에 같은 종류의 열쇠가 여러 개 들어 있어도 되고, 열쇠는 몇 개든 들고 다닐 수 있다.
처음에 열쇠를 적어도 하나 가지고 있고, 어느 상자에 어떤 열쇠가 들어 있는지는 지도에 적혀 있다. 이 정보로 상자를 모두 여는 순서를 찾아라.
예를 들어 상자가 아래와 같이 네 개 있고, 처음에 1번 종류 열쇠 하나만 가지고 있다고 하자.
이때 2, 1, 4, 3 순서로 열면 네 상자를 모두 열 수 있다. 1번 상자를 먼저 열면 하나뿐인 열쇠를 써버려서 더는 어떤 상자도 열지 못한다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫째 줄에는 양의 정수 와 이 주어진다. 는 처음에 가진 열쇠의 개수이고 은 열어야 하는 상자의 개수다.
다음 줄에는 처음에 가진 열쇠의 종류를 나타내는 정수 개가 주어진다.
그다음 개의 줄에는 상자 하나의 정보가 한 줄씩 주어진다. 번째 줄은 정수 와 로 시작한다. 는 번 상자를 여는 데 필요한 열쇠의 종류이고 는 그 상자 안에 든 열쇠의 개수다. 이어서 그 상자 안에 든 열쇠의 종류를 나타내는 정수 개가 주어진다.
제한
- 모든 열쇠의 종류는 이상 이하의 정수다.
- 각 테스트 케이스에서 처음에 가진 열쇠와 상자 안에 든 열쇠를 모두 합해 열쇠는 400개를 넘지 않는다.
출력
각 테스트 케이스마다 Case #x: C1 C2 ... CN 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고 는 번째로 여는 상자의 번호다. 상자 번호는 1부터 시작한다.
상자를 모두 여는 순서가 여러 개면 사전순으로 가장 앞서는 순서를 출력한다. 즉 을 가능한 한 작게 하고, 그런 순서가 여러 개면 를 가능한 한 작게 하고, 이후 자리도 같은 방식으로 정한다.
상자를 모두 여는 순서가 없으면 그 테스트 케이스에는 Case #x: IMPOSSIBLE을 출력한다.