Ali is Hamed's little brother and tomorrow is his birthday. Hamed wants his brother to earn his gift so he gave him a hard programming problem and told him if he can successfully solve it, he'll get him a brand new laptop. Ali is not yet a very talented programmer like Hamed and although he usually doesn't cheat but this time is an exception. It's about a brand new laptop. So he decided to secretly seek help from you. Please solve this problem for Ali. 

An *n*-vertex weighted rooted tree is given. Vertex number 1 is a root of the tree. We define *d*(*u*, *v*) as the sum of edges weights on the shortest path between vertices *u* and *v*. Specifically we define *d*(*u*, *u*) = 0. Also let's define *S*(*v*) for each vertex *v* as a set containing all vertices *u* such that *d*(1, *u*) = *d*(1, *v*) + *d*(*v*, *u*). Function *f*(*u*, *v*) is then defined using the following formula:

The goal is to calculate *f*(*u*, *v*) for each of the *q* given pair of vertices. As the answer can be rather large it's enough to print it modulo 10<sup class="upper-index">9</sup> + 7.
In the first line of input an integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>), number of vertices of the tree is given.

In each of the next *n* - 1 lines three space-separated integers *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub>, *c*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub> ≤ *n*, 1 ≤ *c*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>) are given indicating an edge between *a*<sub class="lower-index">*i*</sub> and *b*<sub class="lower-index">*i*</sub> with weight equal to *c*<sub class="lower-index">*i*</sub>.

In the next line an integer *q* (1 ≤ *q* ≤ 10<sup class="upper-index">5</sup>), number of vertex pairs, is given.

In each of the next *q* lines two space-separated integers *u*<sub class="lower-index">*i*</sub>, *v*<sub class="lower-index">*i*</sub> (1 ≤ *u*<sub class="lower-index">*i*</sub>, *v*<sub class="lower-index">*i*</sub> ≤ *n*) are given meaning that you must calculate *f*(*u*<sub class="lower-index">*i*</sub>, *v*<sub class="lower-index">*i*</sub>).

It is guaranteed that the given edges form a tree.
print("_RANDOM_GUESS_1689650496.7037663")# 1689650496.703787