프로그램 P의 처음에 크기 N의 배열 A가 선언되어 있고,
배열 값 A[1],A[2],…,A[N]이 모두 0으로
초기화되어있다.
프로그램 P에는 M 개의 명령이 있다. i 번째 명령은 다음과 같다.
A[Xi]:=A[Xi]+A[Yi](1≤i≤M)
여기서, a:=b는 a에 값 b를 대입하는 연산이다.
우리는 P를 총 L 번 독립적으로 실행할 것이다.
이때, j 번째 실행에서 각각 Kj 개의 입력값 Uj,k,Vj,k가 주어지고, 이 입력값을 이용해 위의 명령 이전에 다음과 같이 배열의 초기값이 주어진다:
A[Uj,k]:=Vj,k(1≤k≤Kj)
각 j 번째 실행에서, 주어지는 Uj,k는 모두 다르다.
또, Uj,k로 주어지지 않는 i에 대해서 A[i]:=0임에 주의하자.
프로그램 P의 각각의 실행 뒤, A[1]의 값을 구하자.
입력 형식
첫 줄에 배열의 크기를 나타내는 N,
덧셈 연산을 나타내는 정수 M,
실행 횟수를 나타내는 정수 L이
공백으로 구분되어 주어진다. (1≤N,M,L≤250000)
이어지는 M개 줄의 i 번째 줄에는 i 번째 명령을 정의하는 상수를 나타내는 두 정수 Xi와 Yi가 주어진다. (1≤Xi,Yi≤N)
프로그램의 L 번의 실행을 나타내는 줄들이 순서대로 주어진다. 이 중 j 번째 실행을 나타내는 줄들의 첫 줄에는 입력값의 개수를 나타내는 정수 Kj가 주어진다. (1≤Kj≤N)
이어지는 Kj 개의 줄의 k 번째 줄에는 입력값을 나타내는 두 정수 Uj,k와 Vj,k가 주어진다.
(1≤Uj,k≤N,1≤Vj,k≤1000000000)
입력값의 총개수인 ∑Kj은 250000 이하이다.
출력 형식
L 개 줄에 걸쳐 답을 출력한다. i 번째 줄에는 프로그램의 i 번째 실행 이후, A[1]의 값을 1000000007로 나눈 나머지를 출력한다.