우주 최고의 프로그래머 교준이는 N명의 학생을 데리고 "최강의 PS 군단"을 만들고자 한다.
N명의 학생 중에는 같이 있을 때 시너지 효과가 발생하는 학생 조합이 있다. i번 학생의 "시너지 동료" 집합을 A_i라 하자. 이는, i번 학생은, 모든 j∈A_i에 대하여, 자신이 j번 학생과 같이 있을 때 시너지 효과가 나온다고 생각함을 의미한다. 반대로, j∈A_i라면, i번 학생은 자신이 j번 학생과 같이 있어도 시너지 효과가 나온다고 생각하지 않음을 의미한다. (0 ≤i≤N−1)
교준이가 생각하는 "최강의 PS 군단"의 조건은 꽤 까다롭다. N명의 학생이 다음 조건을 모두 만족할 때, 교준이는 "이 N명의 학생이 최강의 PS 군단을 이룬다''고 말한다:
i번 학생이 j번 학생의 "시너지 동료"라면, j번 학생 또한 i번 학생의 "시너지 동료"라야 한다(0 ≤i≤N−1,0 ≤j≤ N−1).
다음 조건을 모두 만족하도록 N명의 학생을 하나 혹은 여러 개의 그룹으로 나눌 수 있다:
N명의 학생은 교준이에게 있어 "최강의 PS 군단"인지 판별하는 프로그램을 작성하시오.
첫 번째 줄에 세 정수 N, B, C가 주어진다.
두 번째 줄부터 N개의 줄에 걸쳐, N명의 학생의 "시너지 동료"에 대한 정보가 주어진다.
(i+2)번째 줄에는 정수 ∣A_i∣와, 집합 A_i에 속한 ∣A_i∣개의 정수가 주어진다 (0 ≤i≤N−1).
만약, N명의 학생이 "최강의 PS 군단"을 이루지 않는다면, 첫 번째 줄에 "NO"(따옴표 제외)를 출력한다.
만일, N명의 학생이 "최강의 PS 군단"을 이룬다면, 첫 번째 줄에 "YES"(따옴표 제외)를 출력한다. 여기서, K개의 집합 P_1,P_2,⋯,P_K가 다음 조건을 모두 만족한다고 하자:
계속하여, 두 번째 줄에는 정수 K를 출력한다.
또한, 세 번째 줄부터 K개의 줄에 걸쳐, K개의 집합 P_1,P_2,⋯,P_K애 대한 정보를 출력한다. (i+2)번째 줄에는 정수 ∣P_i∣와, 집합 P_i에 속한 ∣P_i∣개의 정수를 오름차순으로 차례대로 출력한다 (1≤i≤K).
위와 같은 조건을 만족하는 (K,P_1,P_2,⋯,P_K)가 여러 가지라면, 그 중 아무거나 하나를 취해도 정답으로 인정된다.