# factortree
#codechef factor tree problem
#code
import math
mod=(10**9)+7
'''Function for calculating prime factors and adding the count of prime numbers in dictionary '''
def calc(path,a):
#print(path)
dic={}
for i in range(len(path)):
dic=primeFactors(a[path[i]-1],dic)
value=list(dic.values())
ans=1
for i in range(len(value)):
ans*=(value[i]+1)
ans=ans%mod
print(ans)
def primeFactors(n,dic):
while n % 2 == 0:
if 2 not in dic:
dic[2]=1
else:
dic[2]+=1
n = n / 2
for i in range(3,int(math.sqrt(n))+1,2):
while n % i== 0:
if i not in dic:
dic[i]=1
else:
dic[i]+=1
n = n / i
if n > 2:
if n not in dic:
dic[n]=1
else:
dic[n]+=1
return dic
def addEdge(x, y,v):
v[x].append(y)
v[y].append(x)
def DFS(vis, x, y, stack,v,ansflag,a):
stack.append(x)
if (x == y):
ansflag=1
calc(stack,a)
return
vis[x] = True
flag = 0
if (len(v[x]) > 0):
for j in v[x]:
if (vis[j] == False):
DFS(vis, j, y, stack,v,ansflag,a)
if(ansflag==1):
flag = 1
break
if (flag == 0):
del stack[-1]
return
def DFSCall(x, y, n, stack,v,a):
# visited array
ansflag=0
vis = [0 for i in range(n + 1)]
if(x!=y):
x1=DFS(vis, x, y, stack,v,ansflag,a)
else:
x1=[x]
calc(x1,a)
return
#main
for _ in range(int(input())):
n = int(input())
v = [[] for i in range(n+1)]
for i in range(n-1):
a1,b=map(int,input().split())
addEdge(a1,b,v)
#print(v)
a=list(map(int,input().split()))
q=int(input())
for i in range(q):
x,y=map(int,input().split())
stack = []
DFSCall(x,y,n,stack,v,a)
#calling DFS for the path in tree
IyBmYWN0b3J0cmVlCgojY29kZWNoZWYgZmFjdG9yIHRyZWUgcHJvYmxlbQojY29kZQoKaW1wb3J0IG1hdGgKCm1vZD0oMTAqKjkpKzcKCicnJ0Z1bmN0aW9uIGZvciBjYWxjdWxhdGluZyBwcmltZSBmYWN0b3JzIGFuZCBhZGRpbmcgdGhlIGNvdW50IG9mIHByaW1lIG51bWJlcnMgaW4gZGljdGlvbmFyeSAnJycKCmRlZiBjYWxjKHBhdGgsYSk6CgogICAgI3ByaW50KHBhdGgpCiAgICBkaWM9e30KICAgIGZvciBpIGluIHJhbmdlKGxlbihwYXRoKSk6CiAgICAgICAgZGljPXByaW1lRmFjdG9ycyhhW3BhdGhbaV0tMV0sZGljKQogICAgdmFsdWU9bGlzdChkaWMudmFsdWVzKCkpCiAgICBhbnM9MQogICAgZm9yIGkgaW4gcmFuZ2UobGVuKHZhbHVlKSk6CiAgICAgICAgYW5zKj0odmFsdWVbaV0rMSkKICAgICAgICBhbnM9YW5zJW1vZAogICAgcHJpbnQoYW5zKQoKICAgIApkZWYgcHJpbWVGYWN0b3JzKG4sZGljKTogCgogICAgd2hpbGUgbiAlIDIgPT0gMDoKICAgICAgICBpZiAyIG5vdCBpbiBkaWM6CiAgICAgICAgICAgIGRpY1syXT0xCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGljWzJdKz0xCiAgICAgICAgbiA9IG4gLyAyCiAgICBmb3IgaSBpbiByYW5nZSgzLGludChtYXRoLnNxcnQobikpKzEsMik6IAogICAgICAgIHdoaWxlIG4gJSBpPT0gMDogCiAgICAgICAgICAgIGlmIGkgbm90IGluIGRpYzoKICAgICAgICAgICAgICAgIGRpY1tpXT0xCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkaWNbaV0rPTEgCiAgICAgICAgICAgIG4gPSBuIC8gaQogICAgaWYgbiA+IDI6IAogICAgICAgIGlmIG4gbm90IGluIGRpYzoKICAgICAgICAgICAgZGljW25dPTEKICAgICAgICBlbHNlOgogICAgICAgICAgICBkaWNbbl0rPTEgCiAgICByZXR1cm4gZGljCiAgCmRlZiBhZGRFZGdlKHgsIHksdik6IAoKICAgIHZbeF0uYXBwZW5kKHkpIAogICAgdlt5XS5hcHBlbmQoeCkgIAogCmRlZiBERlModmlzLCB4LCB5LCBzdGFjayx2LGFuc2ZsYWcsYSk6IAogICAgCiAgICBzdGFjay5hcHBlbmQoeCkgCiAgICBpZiAoeCA9PSB5KToKICAgICAgICBhbnNmbGFnPTEKICAgICAgICBjYWxjKHN0YWNrLGEpCiAgICAgICAgcmV0dXJuIAogICAgdmlzW3hdID0gVHJ1ZQogICAgZmxhZyA9IDAKICAgIGlmIChsZW4odlt4XSkgPiAwKTogCiAgICAgICAgZm9yIGogaW4gdlt4XTogCiAgICAgICAgICAgIGlmICh2aXNbal0gPT0gRmFsc2UpOiAKICAgICAgICAgICAgICAgIERGUyh2aXMsIGosIHksIHN0YWNrLHYsYW5zZmxhZyxhKSAKICAgICAgICAgICAgICAgIGlmKGFuc2ZsYWc9PTEpOgogICAgICAgICAgICAgICAgICAgIGZsYWcgPSAxICAKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAKICAgIGlmIChmbGFnID09IDApOiAKICAgICAgICBkZWwgc3RhY2tbLTFdIAogICAgICAgICAgICAKICAgIHJldHVybiAKZGVmIERGU0NhbGwoeCwgeSwgbiwgc3RhY2ssdixhKTogCiAgICAgIAogICAgIyB2aXNpdGVkIGFycmF5IAogICAgYW5zZmxhZz0wCiAgICB2aXMgPSBbMCBmb3IgaSBpbiByYW5nZShuICsgMSldIAogICAgaWYoeCE9eSk6CiAgICAgICAgeDE9REZTKHZpcywgeCwgeSwgc3RhY2ssdixhbnNmbGFnLGEpCiAgICBlbHNlOgogICAgICAgIHgxPVt4XQogICAgICAgIGNhbGMoeDEsYSkKICAgIHJldHVybgogICAgCiNtYWluCgpmb3IgXyBpbiByYW5nZShpbnQoaW5wdXQoKSkpOgogICAgCiAgICBuID0gaW50KGlucHV0KCkpCiAgICB2ID0gW1tdIGZvciBpIGluIHJhbmdlKG4rMSldCiAgICAKICAgIGZvciBpIGluIHJhbmdlKG4tMSk6CiAgICAgICAgYTEsYj1tYXAoaW50LGlucHV0KCkuc3BsaXQoKSkKICAgICAgICBhZGRFZGdlKGExLGIsdikgCiAgICAjcHJpbnQodikKICAgIGE9bGlzdChtYXAoaW50LGlucHV0KCkuc3BsaXQoKSkpCiAgICBxPWludChpbnB1dCgpKQogICAgCiAgICBmb3IgaSBpbiByYW5nZShxKToKICAgICAgICB4LHk9bWFwKGludCxpbnB1dCgpLnNwbGl0KCkpCiAgICAgICAgc3RhY2sgPSBbXQogICAgICAgIERGU0NhbGwoeCx5LG4sc3RhY2ssdixhKQojY2FsbGluZyBERlMgZm9yIHRoZSBwYXRoIGluIHRyZWU=