트리와 색깔

각 정점에 색이 있는 루트 트리에서 f(v,c)를 v의 서브트리에서 색이 c 이하인 정점 수로 정의할 때, 모든 질의 답의 합을 1e9+7로 나눈 나머지를 구한다.

보통6트리DFS정렬누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

N개의 정점과 N1N-1개의 간선으로 이루어진 트리가 있다. 정점에는 11부터 NN까지 번호가 붙어 있으며, 루트는 11번 정점이다. 서로 다른 두 정점 사이를 잇는 경로는 정확히 하나 존재한다.

각 정점은 하나의 색깔을 가진다. 색깔은 11 이상 CC 이하의 정수로 나타낸다. 정점 vv와 색깔 cc에 대하여 질의 f(v,c)f(v, c)를 다음과 같이 정의한다.

f(v,c)f(v, c)는 정점 vv를 루트로 하는 서브트리 안에서 색깔이 cc 이하인 정점의 개수이다.

MM개의 질의 f(vi,ci)f(v_i, c_i)가 주어진다.

입력

첫째 줄에 NN, MM, CC가 공백으로 구분되어 주어진다. NN은 정점의 수, MM은 질의의 개수, CC는 색깔의 종류 수이며, 1N2×1051 \le N \le 2 \times 10^5, 1M2×1051 \le M \le 2 \times 10^5, 1CN1 \le C \le N을 만족한다.

둘째 줄에 NN개의 정수가 공백으로 구분되어 주어진다. ii번째 수는 ii번 정점의 색깔이며, 각 수는 11 이상 CC 이하이다.

이어지는 N1N-1개의 줄에는 트리의 간선 정보가 주어진다. 각 줄에는 간선을 이루는 서로 다른 두 정점의 번호 uuvv가 공백으로 구분되어 주어지며, 1u,vN1 \le u, v \le N을 만족한다.

이어지는 MM개의 줄에는 질의 정보가 주어진다. ii번째 줄에는 viv_icic_i가 공백으로 구분되어 주어지며, 1viN1 \le v_i \le N이고 1ciC1 \le c_i \le C이다.

출력

MM개의 질의에 대한 답을 모두 더한 뒤 1,000,000,0071,000,000,007로 나눈 나머지를 출력한다.