조교 배치
시간 제한1초메모리 제한256 MB
각자 한 연구실만 지원한 사람들을 정원이 정해진 A, B, C 세 연구실에 배정해 최대 인원을 구하고 배정 결과를 출력한다.
문제
세계 과학의 날을 기념하여 LG 대학에서 일반인들이 참여할 수 있는 과학 실험 이벤트를 준비했다. 참가자가 많을 것으로 예상되어 대학 안의 큰 강당 세 개를 실험실로 쓰기로 했다. 강당의 이름은 A, B, C이고, 실험실의 이름도 강당의 이름을 따른다.
참가자 모두의 안전을 위해 각 강당에는 실험 조교를 충분히 배치하지만, 만일의 사태에 대비해 보조 조교도 배치하려고 한다.
보조 조교에 지원한 사람은 모두 n명이고, 강당 A, B, C에 각각 최대 nA, nB, nC명의 보조 조교를 배치하려고 한다. 한 사람은 최대 한 곳의 실험실에만 배정할 수 있고, 사람마다 선호하는 강당이 다르므로 이를 고려해 배치해야 한다.
예를 들어 n = 4, nA = nB = nC = 1인 경우를 생각해보자. 사람은 1부터 4까지 번호가 매겨져 있다.
- 실험실 A에는 1번만 지원했고, 실험실 B에도 1번만 지원했다.
- 실험실 C에는 2번과 3번이 지원했다.
- 4번은 아무 곳에도 지원하지 않았다.
이 경우 nC = 1이므로 2번과 3번을 모두 실험실 C에 배정할 수는 없고, 둘 중 최대 한 명만 배정할 수 있다. 1번은 실험실 A 또는 실험실 B에 배정할 수 있고, 두 곳에 동시에 배정할 수는 없다. 따라서 이 예시에서는 최대 두 명의 보조 조교를 배치할 수 있다.
n, nA, nB, nC와 각 강당의 보조 조교를 희망하는 사람들의 목록이 주어졌을 때, 최대한 많은 사람을 보조 조교로 배치하려면 어떻게 해야 하는지 구해보자.
입력
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫째 줄에는 n이 주어지고, 그 다음 줄에는 nA nB nC가 공백으로 구분되어 주어진다.
다음 세 줄에 걸쳐 각 줄에 실험실에 지원한 사람의 목록이 주어진다. 첫째 줄에는 실험실 A에 지원한 사람의 수 mA가 주어지고, 이어 공백으로 구분된 mA명의 사람 번호가 주어진다. 다음 줄에는 실험실 B에 지원한 사람의 수 mB가 주어지고, 이어 공백으로 구분된 mB명의 사람 번호가 주어진다. 다음 줄에는 실험실 C에 지원한 사람의 수 mC와 공백으로 구분된 mC명의 사람 번호가 주어진다.
사람의 번호는 1 이상 n 이하의 자연수이다. 지원자 목록에 같은 사람이 두 번 이상 주어지는 경우는 없다.
출력
각 테스트 케이스마다 첫째 줄에 보조 조교로 배정된 사람의 수를 출력한다.
배정된 사람의 수가 x라면 다음 x줄에 걸쳐 각 줄에 사람의 번호와 실험실 이름(A, B, C 중 하나)을 공백으로 구분해 출력한다.
최대한 많은 보조 조교를 배정하는 방법이 여러 가지라면 그중 아무 것이나 출력해도 된다.
제한
- 1 ≤ T ≤ 10
- 1 ≤ n ≤ 10,000
- 1 ≤ nA, nB, nC ≤ n
- 0 ≤ mA, mB, mC ≤ n