주어진 IPv4 서브넷들을 정확히 같은 주소를 덮는 가장 짧은 정규 서브넷 목록으로 합쳐 정렬합니다.
보통6트라이비트 연산정렬아직 제출이 없습니다시간 제한5초메모리 제한512 MBIP(Internet Protocol) 주소는 인터넷에 연결된 장치마다 하나씩 부여하는 번호다. 지금은 대부분의 장치가 이 프로토콜의 네 번째 버전(IPv4)을 쓴다. IPv4 주소는 32비트 문자열이다. 보통은 점으로 구분한 십진 표기로 적는다. 0 이상 255 이하의 십진수 네 개를 점으로 이어 쓰고, 이 십진수 하나를 옥텟이라고 부른다. 예를 들어 172.16.254.1이다. 옥텟 하나는 주소의 8비트(1바이트)를 나타낸다. 최상위 비트부터 세어 앞의 8비트가 첫 번째 옥텟, 그다음 8비트가 두 번째 옥텟이고, 나머지도 같은 방식이다.
IP 서브넷 주소는 같은 네트워크에 속한 장치 묶음을 나타낸다. 서브넷 주소는 IP 주소 뒤에 슬래시와 프리픽스 길이를 붙여 적고, 프리픽스 길이는 0 이상 32 이하다. 프리픽스 길이가 P인 서브넷 주소는 주어진 주소와 앞 P비트가 같은 모든 IP 주소를 뜻한다. 예를 들어 10.8.0.0/9는 앞 9비트가 000010100(10.8.0.0의 앞 9비트)인 주소 223개, 즉 10.0.0.0부터 10.127.255.255까지를 나타낸다. 10.8.0.0/9와 10.0.0.0/9는 앞 9비트가 같으므로 같은 서브넷을 가리킨다. 그 서브넷 안의 다른 주소를 적어도 마찬가지다.
프리픽스 뒤쪽 비트가 모두 0인 서브넷을 정규화된 서브넷이라고 한다. 예를 들어 10.8.1.0/24와 10.8.1.2/24는 같은 서브넷을 가리키지만 정규화된 쪽은 10.8.1.0/24다. 255.255.255.255/13을 정규화하면 255.248.0.0/13이다.
서브넷 주소 목록이 주어진다. 어떤 IP 주소가 입력의 서브넷 중 하나에 속하는 것과 출력의 서브넷 중 하나에 속하는 것이 서로 같은 조건이 되도록, 정규화된 서브넷으로만 이루어진 가장 짧은 목록을 찾아 정해진 순서대로 출력하라.
첫 줄에 테스트 케이스 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다. 각 테스트 케이스는 서브넷 개수 N이 적힌 줄로 시작하고, 그 뒤에 서브넷 주소가 한 줄에 하나씩 N개 주어진다. 각 서브넷 주소는 A.B.C.D/P 꼴이며, A, B, C, D는 0 이상 255 이하의 정수이고 P는 0 이상 32 이하의 정수다. 0 자체를 빼면 어떤 정수에도 앞자리 0은 없다.
각 테스트 케이스마다 먼저 "Case #x:"를 한 줄에 출력한다. 여기서 x는 1부터 시작하는 테스트 케이스 번호다. 그다음 위 조건을 만족하는 서브넷 주소 목록을 한 줄에 하나씩 출력한다. 이 주소는 모두 정규화되어 있어야 하고 순서대로 나열되어 있어야 한다. 주소 X의 첫 번째 정수가 주소 Y의 첫 번째 정수보다 작으면 X가 Y보다 앞선다. 두 주소의 첫 번째 정수가 같으면 두 번째 정수를 비교하고, 그 뒤 정수도 같은 방식으로 비교한다.
문제의 조건에 따라 각 테스트 케이스의 답은 하나로 정해진다.