바이텍은 최근 화학에 푹 빠져 자기만의 실험실을 만들었다. 이미 여러 화합물과 다양한 반응을 실행할 수 있는 도구를 갖추었고, 이제 가진 것을 활용해 아직 가지고 있지 않은 화합물을 몇 종류나 만들 수 있는지 궁금해한다.
바이텍이 이미 가진 화합물은 모두 무한히 있다고 가정한다. 어떤 반응은 그 반응에 필요한 모든 반응물(substrate)을 바이텍이 가지고 있을 때 실행할 수 있으며, 실행하면 그 반응의 모든 생성물(product)을 얻는다. 이렇게 얻은 생성물은 다시 다른 반응의 재료로 쓸 수 있다.
바이텍이 가진 화합물과 실행할 수 있는 반응을 읽어, 아직 가지고 있지 않지만 만들어 낼 수 있는 화합물의 개수를 구하는 프로그램을 작성하라.
첫째 줄에 세 정수 n, k, r (1≤n≤106, 1≤k≤n, 1≤r≤105)가 공백 하나로 구분되어 주어진다. 각각 바이텍이 아는 화합물의 수, 바이텍이 가진 화합물의 수, 실행할 수 있는 반응의 수를 뜻한다.
둘째 줄에는 바이텍이 가진 화합물의 번호를 나타내는 서로 다른 k개의 정수 ai (1≤ai≤n)가 공백으로 구분되어 주어진다.
이어지는 r개의 줄에는 각각 반응 하나가 설명된다. 먼저 반응물의 개수를 나타내는 정수 sj (1≤sj≤10)가 오고, 그 뒤에 sj개의 반응물 번호가 온다. 이어서 생성물의 개수를 나타내는 정수 pj (1≤pj≤10)가 오고, 그 뒤에 pj개의 생성물 번호가 온다. 모든 화합물 번호는 1 이상 n 이하이다. 한 반응의 반응물 번호는 서로 다르고 생성물 번호도 서로 다르지만, 같은 화합물이 한 반응의 반응물이면서 동시에 생성물일 수도 있다(이 경우 촉매 역할을 한다). 한 반응을 설명하는 모든 수는 공백 하나로 구분된다.
바이텍이 아직 가지고 있지 않지만, 가진 화합물로부터 적절한 반응을 실행하여 만들 수 있는 화합물의 개수를 정수 하나로 출력한다.
예시에서 네 반응은 다음과 같다.
바이텍은 처음에 화합물 1과 2를 가지고 있다. 첫 번째 반응으로 3과 4를 얻고, 이어서 세 번째 반응으로 5를 만들 수 있다. 반면 화합물 6, 7, 8은 만들 수 없다. 따라서 새로 만들 수 있는 화합물은 3개(3, 4, 5)이다.