그래프 여행자
시간 제한2초메모리 제한512 MB
각 질의 (x, y)에서 출발해 c의 누적값에 따라 간선을 고르는 이동이 무한히 방문하는 서로 다른 정점의 개수를 구합니다.
문제
Gildong은 Graph Traveler라는 기계를 실험하고 있다. Graph Traveler에는 1부터 까지 번호가 붙은 개의 정점으로 이루어진 방향 그래프가 있다. 번째 정점에는 개의 나가는 간선이 있으며, 각 간선은 로 표시되고 도착 정점을 나타낸다. 그래프에는 다중 간선과 자기 루프가 있을 수 있다. 번째 정점에는 정수 가 적혀 있다.
여행은 다음과 같이 진행된다.
- Gildong이 시작 정점과 정수를 고른다. 변수 를 이 정수로 둔다.
- 정점 에 도착하거나 정점 에서 여행을 시작하면 에 를 더한다.
- 다음 정점은 이고 를 만족하는 정수 에 대한 이다. 그 정점으로 이동한 뒤 2단계로 돌아간다.
2단계와 3단계가 끝없이 반복되므로 여행은 끝나지 않는다. 예를 들어 Gildong이 로 정점 1에서 시작하고, , , , 이라고 하자. 시작하자마자 는 2가 된다. 이고 를 만족하는 정수는 0뿐이므로 정점 로 이동한다. 정점 1에 다시 도착하면 는 -1이 된다. 조건을 만족하는 는 1이므로 정점 로 이동하며, 이후도 같은 방식으로 진행된다.
Gildong은 호기심이 많아서 질의 개를 던진다. 각 질의에서 그는 어떤 정점에서 특정한 값으로 여행을 시작했을 때, 무한히 많이 방문되는 서로 다른 정점이 몇 개인지 알고 싶어 한다. 유한 번만 방문되는 정점은 세지 않는다.
입력
첫 줄에 정점의 개수 ()이 주어진다.
둘째 줄에는 개의 정수가 주어진다. 번째 정수는 ()이다.
이어지는 개의 줄은 간선을 나타낸다. 번째 줄에는 정점 의 나가는 간선 수 ()가 주어진다. 번째 줄에는 이 주어지며, 각 값은 1 이상 이하이다.
다음 줄에는 질의의 개수 ()가 주어진다. 이어지는 개의 줄에는 정수 , (, )가 주어지며, 이는 정점 에서 로 여행을 시작한다는 뜻이다.
출력
각 질의에 대해 무한히 많이 방문되는 서로 다른 정점의 개수를 한 줄에 하나씩 출력한다.
힌트
첫 번째 입력의 그래프는 아래 그림과 같다. 각 정점에는 정점 번호 , 정수 , 간선 수 세 값이 표시되어 있다. 나가는 간선에는 간선 번호가 적혀 있다.

첫 번째 입력의 각 질의에서 여행은 다음과 같이 진행된다. 각 단계는 "정점(k_i를 더한 뒤의 c)" 형식으로 적었다.
두 번째 입력은 같은 그래프이지만 정점의 값이 0이 아니므로 답이 달라진다.

두 번째 입력의 여행은 다음과 같다.