어느 가정집에 FBI가 갑자기 찾아온 일이 있었다. 아내는 집 컴퓨터로 압력솥을 검색했고, 남편은 배낭을 살펴보고 있었다. 배낭에 숨긴 압력솥으로 사제 폭발물을 만든 보스턴 마라톤 폭탄 테러 직후였다.
적발을 피하려는 사람은 공격에 필요한 재료를 혼자서 전부 검색하거나 주문하지 않는다. 대신 여러 사람이 재료를 나눠 주문한다. 그래서 누가 누구와 아는 사이인지 기록한 자료가 이런 움직임을 찾는 데 쓸모가 있다.
관계망의 친분 관계 전체와, 각 사람이 온라인에서 주문했거나 살펴본 물품 목록이 주어진다. 여기서 클리크란 어느 두 사람을 골라도 서로 친분이 있는 사람들의 집합이다. 공격에 쓸 수 있는 물품 조합의 목록도 함께 주어진다. 예를 들어 물품 {1,4,6}이 모이면 공격을 시작할 수 있다고 하자. 어떤 클리크가 주문한 물품을 합쳐 {1,2,4,6,9}가 된다면 그 클리크도 공격을 실행할 수 있다. 주문한 물품을 모두 합쳤을 때 공격을 실행할 수 있는 클리크가 자료에 몇 개인지 세어라.
한 사람이 혼자서 이미 재료를 전부 주문했다면 그 사람이 속한 클리크는 모두 재료를 갖춘 셈이다. 같은 재료 때문에 여러 클리크가 세어지지만, 그렇게 세는 것이 맞다.
첫 줄에 데이터 세트의 개수 K가 주어진다. 이어서 데이터 세트 K개가 다음 형식으로 주어진다.
각 데이터 세트의 첫 줄에는 네 정수 n, m, k, c가 공백으로 구분되어 주어진다. 1≤n≤20은 관계망에 속한 사람 수, 1≤m≤50은 구매를 추적하는 물품 수, 0≤k≤100은 공격에 쓸 수 있는 물품 조합의 개수, 0≤c≤400은 관계망에 있는 친분 관계의 수이다.
다음 k개 줄에는 공격에 쓸 수 있는 물품 조합이 한 줄에 하나씩 주어진다. 각 줄의 첫 정수는 그 조합에 들어 있는 물품 수 si (1≤si≤m)이고, 뒤이어 같은 줄에 1 이상 m 이하의 정수 si개가 주어진다.
다음 n개 줄에는 각 사람이 산 물품이 주어진다. j번째 줄은 j번 사람이 산 물품 수 tj (0≤tj≤m)로 시작하고, 뒤이어 1 이상 m 이하의 정수 tj개가 주어진다.
마지막 c개 줄에는 각각 1 이상 n 이하의 서로 다른 두 정수가 주어진다. 두 사람 사이에 친분 관계가 있다는 뜻이다.
각 데이터 세트마다 먼저 Data Set x:를 한 줄에 출력한다. x는 데이터 세트의 번호이다. 다음 줄에는 주문한 물품을 합쳐서 공격을 실행할 수 있는, 한 명 이상으로 이루어진 서로 다른 클리크의 개수를 출력한다. 데이터 세트 사이에는 빈 줄을 하나 넣는다.