대형 병원의 휴가 관리 시스템을 만들려고 한다. 이 병원의 간호사는 두 종류로 나뉜다.
모든 특수 간호사는 자신을 대체할 수 있는 간호사의 목록을 가지고 있다. 특수 간호사가 휴가를 가면 그 목록에 있는 간호사 중 한 명이 자리를 넘겨받는다. 그런데 자리를 넘겨받은 간호사가 또 다른 특수 간호사라면, 그 간호사가 원래 맡던 자리도 다시 누군가로 대체되어야 한다. 이렇게 대체가 연쇄적으로 이어져 마지막에 일반 간호사가 자리를 메우면 휴가가 성립한다. 한 간호사는 한 번에 한 자리만 대신할 수 있고, 휴가 중인 간호사는 다른 자리를 대신할 수 없다. 대체 사슬을 만들 수 없으면 그 특수 간호사는 휴가를 갈 수 없다.
예를 들어 간호사가 7명 있고 15번이 특수 간호사, 67번이 일반 간호사라고 하자. 각 특수 간호사를 대체할 수 있는 간호사가 다음과 같다고 하자. 1번은 6번 또는 7번, 2번은 7번, 3번은 2번 또는 7번, 4번은 5번, 5번은 4번. 이때 4번과 5번은 서로만 대체할 수 있어서, 한 명이 휴가를 가면 남은 한 명이 두 자리를 동시에 맡을 수 없으므로 둘 다 절대 휴가를 갈 수 없다. 1, 2, 3번은 각자 휴가를 갈 수 있다. 다만 2번과 3번은 결국 모두 7번 간호사에게 의존하는데 7번은 두 자리를 한꺼번에 대신할 수 없으므로, 2번과 3번은 동시에 휴가를 갈 수 없다.
간호사들의 대체 정보가 주어졌을 때, 절대로 휴가를 갈 수 없는 간호사와, 각자 휴가를 갈 수는 있지만 서로 동시에는 갈 수 없는 간호사 쌍을 모두 구하는 프로그램을 작성하시오.
첫째 줄에 전체 간호사 수 n과 특수 간호사 수 k가 주어진다. 1번부터 k번까지가 특수 간호사, k+1번부터 n번까지가 일반 간호사이다. (1≤k<n≤1000)
이어지는 k개의 줄 중 i번째 줄에는 i번 특수 간호사를 대체할 수 있는 간호사의 정보가 주어진다. 줄의 첫 번째 수는 대체 가능한 간호사의 수 di이고, 이어서 di개의 간호사 번호가 주어진다. 모든 목록 길이의 합은 10000을 넘지 않는다.
첫째 줄에 절대로 휴가를 갈 수 없는 간호사의 수를 출력한다. 둘째 줄에는 그 간호사들의 번호를 오름차순으로 공백으로 구분해 출력한다(해당하는 간호사가 없으면 빈 줄을 출력한다).
셋째 줄에는 각자 휴가를 갈 수는 있지만 서로 동시에는 휴가를 갈 수 없는 간호사 쌍의 수를 출력한다. 쌍 (A,B)와 (B,A)는 같은 쌍으로 센다. 그 수가 10000 이하이면, 다음 줄부터 한 줄에 한 쌍씩 두 간호사의 번호를 A<B 순서로 출력하되, 쌍은 앞 번호 우선, 그다음 뒤 번호 순의 오름차순으로 정렬해 출력한다.