region-find-december-easy-medium-hard

You are given a tree with N nodes and N-1 edges. We define a region as a set of nodes, such that if we remove all other nodes from the tree, these nodes still remain connected i.e. there exists a path between any two remaining nodes.

All the nodes have a weight associated to them. You are given Q queries. Each query has a number k. You have to find number of regions, such that the minimum weight among all the nodes of that region is exactly k. Output your answer modulo 10^9 + 7.

INPUT

The first line will contain N, the number of nodes. Next line will contain N integers. The i^th integer will indicate weight, the weight of i^th node. Next N-1 lines will contain 2 integers "x y" (quotes for clarity) denoting an edge between node x and node y.  Next line will contain a number Q , the number of queries. Next Q lines will contain an integer k , which is as described in problem statement.

NOTE : nodes are numbered 1 indexed.

OUTPUT

You have to output Q lines, each containing a single integer, the answer to the corresponding query.

CONSTRAINTS

1 ≤ N ≤ 1500

1≤ x, y ≤ n

1 ≤ Q ≤ 2000

1 ≤ weight, k ≤ 10^9

SAMPLE INPUT
4
2 4 3 1 
4 3
4 2
4 1
4
1
2
3
4

SAMPLE OUTPUT
8
1
1
1

Source: hackerearth | Difficulty: MEDIUM_HARD


Solutions: