병원

아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

대형 병원의 휴가 관리 시스템을 만들려고 한다. 이 병원의 간호사는 두 종류로 나뉜다.

  • 일반 간호사는 입원 환자를 돌보는 간호사로, 휴가를 가더라도 다른 간호사가 업무를 대신 맡을 수 있어 문제가 되지 않는다.
  • 특수 간호사는 "수술 간호사", "간호부장"처럼 특별히 맡은 자리가 있는 간호사로, 반드시 자신을 대신할 대체자가 있어야만 휴가를 갈 수 있다.

모든 특수 간호사는 자신을 대체할 수 있는 간호사의 목록을 가지고 있다. 특수 간호사가 휴가를 가면 그 목록에 있는 간호사 중 한 명이 자리를 넘겨받는다. 그런데 자리를 넘겨받은 간호사가 또 다른 특수 간호사라면, 그 간호사가 원래 맡던 자리도 다시 누군가로 대체되어야 한다. 이렇게 대체가 연쇄적으로 이어져 마지막에 일반 간호사가 자리를 메우면 휴가가 성립한다. 한 간호사는 한 번에 한 자리만 대신할 수 있고, 휴가 중인 간호사는 다른 자리를 대신할 수 없다. 대체 사슬을 만들 수 없으면 그 특수 간호사는 휴가를 갈 수 없다.

예를 들어 간호사가 77명 있고 1155번이 특수 간호사, 6677번이 일반 간호사라고 하자. 각 특수 간호사를 대체할 수 있는 간호사가 다음과 같다고 하자. 11번은 66번 또는 77번, 22번은 77번, 33번은 22번 또는 77번, 44번은 55번, 55번은 44번. 이때 44번과 55번은 서로만 대체할 수 있어서, 한 명이 휴가를 가면 남은 한 명이 두 자리를 동시에 맡을 수 없으므로 둘 다 절대 휴가를 갈 수 없다. 11, 22, 33번은 각자 휴가를 갈 수 있다. 다만 22번과 33번은 결국 모두 77번 간호사에게 의존하는데 77번은 두 자리를 한꺼번에 대신할 수 없으므로, 22번과 33번은 동시에 휴가를 갈 수 없다.

간호사들의 대체 정보가 주어졌을 때, 절대로 휴가를 갈 수 없는 간호사와, 각자 휴가를 갈 수는 있지만 서로 동시에는 갈 수 없는 간호사 쌍을 모두 구하는 프로그램을 작성하시오.

입력

첫째 줄에 전체 간호사 수 nn과 특수 간호사 수 kk가 주어진다. 11번부터 kk번까지가 특수 간호사, k+1k+1번부터 nn번까지가 일반 간호사이다. (1k<n10001 \le k < n \le 1000)

이어지는 kk개의 줄 중 ii번째 줄에는 ii번 특수 간호사를 대체할 수 있는 간호사의 정보가 주어진다. 줄의 첫 번째 수는 대체 가능한 간호사의 수 did_i이고, 이어서 did_i개의 간호사 번호가 주어진다. 모든 목록 길이의 합은 1000010\,000을 넘지 않는다.

출력

첫째 줄에 절대로 휴가를 갈 수 없는 간호사의 수를 출력한다. 둘째 줄에는 그 간호사들의 번호를 오름차순으로 공백으로 구분해 출력한다(해당하는 간호사가 없으면 빈 줄을 출력한다).

셋째 줄에는 각자 휴가를 갈 수는 있지만 서로 동시에는 휴가를 갈 수 없는 간호사 쌍의 수를 출력한다. 쌍 (A,B)(A, B)(B,A)(B, A)는 같은 쌍으로 센다. 그 수가 1000010\,000 이하이면, 다음 줄부터 한 줄에 한 쌍씩 두 간호사의 번호를 A<BA < B 순서로 출력하되, 쌍은 앞 번호 우선, 그다음 뒤 번호 순의 오름차순으로 정렬해 출력한다.