#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define endme "\n";
#define ffprint(x) \
for (auto &i : x) \
{ \
cout << i << " "; \
} \
cout<<endme;
#define vectinput(x) for(auto &i : x) cin >> i;
#ifndef ONLINE_JUDGE
#include"Debug.cpp"
#endif
void dfs(int node,int parent,map<int,int>&mp,vector<vector<int>>&adj,vector<int>&values,int&answer,vector<int>&squarefree){
int sqaurefreepart=squarefree[values[node]];
if(mp.find(sqaurefreepart)!=mp.end()){
answer+=mp[sqaurefreepart];
}
mp[sqaurefreepart]++;
for(auto x:adj[node]){
if(x!=parent){
dfs(x,node,mp,adj,values,answer,squarefree);
}
}
mp[sqaurefreepart]--;
if(mp[sqaurefreepart]==0)mp.erase(sqaurefreepart);
}
void sieve(vector<bool>&primes,vector<int>&squarefree){
for(int i=1;i<squarefree.size();i++){
squarefree[i]=i;
}
primes[0]=primes[1]=false;
for(int i=2;i<squarefree.size();i++){
if(!primes[i])continue;
for(int j=i*i;j<squarefree.size();j+=i){
primes[j]=false;
while((squarefree[j]%(i*i)==0)){
squarefree[j]/=(i*i);
}
}
}
// debug(squarefree);
}
void solve(){
int n;
cin>>n;
vector<vector<int>> adj(n);
vector<int>values(n);
vectinput(values);
for(int i=0;i<n-1;i++){
int a,b;
cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
int answer=0;
int mx=*max_element(values.begin(),values.end());
vector<bool>primes(mx+2,true);
vector<int>squarefree(mx+2);
sieve(primes,squarefree);
map<int,int> mp;
dfs(0,-1,mp,adj,values,answer,squarefree);
cout<<answer<<endme;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("0-InputFile/input.txt", "r", stdin);
freopen("0-InputFile/output.txt", "w", stdout);
#endif
int t;
cin>>t;
// t=1;
while (t--) {
solve();
}
return 0;
}
/*
reset_template.bat
%%%%%%%%+++*%@@@@@%%@%%%%%%%%%%%@@%%%%%%##**###%%%
%%%%%%%%#*#%@@@@@@@%%%%%#%%%@@@@@%####**####%%@@@@
%%%%%%%%##%@@@@@@@*+++++++++*#@@@@%####%%%%@@@@@@@
%%%%%%%%#%%@@@@@#++++++++++++@@@@@@@%%%@@@@@@@@@@@
@%#%%#%#%%%%%%*++++++++++++++*@@@@@@#++++++*######
%%%%%#%%%###++++++++++++++++++*#@@@#*******#******
#%%%%%%%%%%*+++++******+++++++++**++*##**+++***##%
%%#%%%%%@@*++++*%@@#*****#%#*++++++++++++**##%@@@%
%%%%%%%%%#+***#@@@#++*++*@@@#***+++++++*#%@@%##%%%
%%%%%%%%#**###%@@#+++++++#@@@#*#**++**##%#####%@@@
%%%%%%%%%**####%#++*##*++*@@@%###***#@@@@@%%%%@@@@
%%%%%%%%%#*#####**#@@@@@***%%%%%##*%@@@@@@@@%%@@%%
%%%%%%%%#%**######%%@@%##%%%%%%%##%@@@@@@@@@%#****
%@@%%%###@@%#%%%@%%@@@@@@@%%%%%%%@@@@@@@@@@@@%#**#
%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###
%%%#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIGxkID0gbG9uZyBkb3VibGU7CiNkZWZpbmUgZW5kbWUgIlxuIjsKI2RlZmluZSBmZnByaW50KHgpICAgICAgICBcCiAgICBmb3IgKGF1dG8gJmkgOiB4KSAgICAgIFwKICAgIHsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgY291dCA8PCBpIDw8ICIgIjsgXAogICAgfSBcCiAgICBjb3V0PDxlbmRtZTsKI2RlZmluZSB2ZWN0aW5wdXQoeCkgZm9yKGF1dG8gJmkgOiB4KSBjaW4gPj4gaTsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgI2luY2x1ZGUiRGVidWcuY3BwIgojZW5kaWYKCgp2b2lkIGRmcyhpbnQgbm9kZSxpbnQgcGFyZW50LG1hcDxpbnQsaW50PiZtcCx2ZWN0b3I8dmVjdG9yPGludD4+JmFkaix2ZWN0b3I8aW50PiZ2YWx1ZXMsaW50JmFuc3dlcix2ZWN0b3I8aW50PiZzcXVhcmVmcmVlKXsKICAgIGludCBzcWF1cmVmcmVlcGFydD1zcXVhcmVmcmVlW3ZhbHVlc1tub2RlXV07CiAgICBpZihtcC5maW5kKHNxYXVyZWZyZWVwYXJ0KSE9bXAuZW5kKCkpewogICAgICAgIGFuc3dlcis9bXBbc3FhdXJlZnJlZXBhcnRdOwogICAgfQogICAgbXBbc3FhdXJlZnJlZXBhcnRdKys7CiAgICBmb3IoYXV0byB4OmFkaltub2RlXSl7CiAgICAgICAgaWYoeCE9cGFyZW50KXsKICAgICAgICAgICAgZGZzKHgsbm9kZSxtcCxhZGosdmFsdWVzLGFuc3dlcixzcXVhcmVmcmVlKTsKICAgICAgICB9CiAgICB9CiAgICBtcFtzcWF1cmVmcmVlcGFydF0tLTsKICAgIGlmKG1wW3NxYXVyZWZyZWVwYXJ0XT09MCltcC5lcmFzZShzcWF1cmVmcmVlcGFydCk7Cn0KCgp2b2lkIHNpZXZlKHZlY3Rvcjxib29sPiZwcmltZXMsdmVjdG9yPGludD4mc3F1YXJlZnJlZSl7CiAgICBmb3IoaW50IGk9MTtpPHNxdWFyZWZyZWUuc2l6ZSgpO2krKyl7CiAgICAgICAgc3F1YXJlZnJlZVtpXT1pOwogICAgfQogICAgcHJpbWVzWzBdPXByaW1lc1sxXT1mYWxzZTsKICAgIGZvcihpbnQgaT0yO2k8c3F1YXJlZnJlZS5zaXplKCk7aSsrKXsKICAgICAgICBpZighcHJpbWVzW2ldKWNvbnRpbnVlOwogICAgICAgIGZvcihpbnQgaj1pKmk7ajxzcXVhcmVmcmVlLnNpemUoKTtqKz1pKXsKICAgICAgICAgICAgcHJpbWVzW2pdPWZhbHNlOwogICAgICAgICAgICB3aGlsZSgoc3F1YXJlZnJlZVtqXSUoaSppKT09MCkpewogICAgICAgICAgICAgICAgc3F1YXJlZnJlZVtqXS89KGkqaSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvLyBkZWJ1ZyhzcXVhcmVmcmVlKTsKfQoKdm9pZCBzb2x2ZSgpewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGFkaihuKTsKICAgIHZlY3RvcjxpbnQ+dmFsdWVzKG4pOwogICAgdmVjdGlucHV0KHZhbHVlcyk7CiAgICBmb3IoaW50IGk9MDtpPG4tMTtpKyspewogICAgICAgIGludCBhLGI7CiAgICAgICAgY2luPj5hPj5iOwogICAgICAgIGFkalthXS5wdXNoX2JhY2soYik7CiAgICAgICAgYWRqW2JdLnB1c2hfYmFjayhhKTsKICAgIH0KCiAgICBpbnQgYW5zd2VyPTA7CiAgICBpbnQgbXg9Km1heF9lbGVtZW50KHZhbHVlcy5iZWdpbigpLHZhbHVlcy5lbmQoKSk7CiAgICB2ZWN0b3I8Ym9vbD5wcmltZXMobXgrMix0cnVlKTsKICAgIHZlY3RvcjxpbnQ+c3F1YXJlZnJlZShteCsyKTsKCiAgICBzaWV2ZShwcmltZXMsc3F1YXJlZnJlZSk7CiAgICAKICAgIG1hcDxpbnQsaW50PiBtcDsKICAgIGRmcygwLC0xLG1wLGFkaix2YWx1ZXMsYW5zd2VyLHNxdWFyZWZyZWUpOwogICAgY291dDw8YW5zd2VyPDxlbmRtZTsKfQoKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgICAgICBmcmVvcGVuKCIwLUlucHV0RmlsZS9pbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCIwLUlucHV0RmlsZS9vdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgI2VuZGlmCgogICBpbnQgdDsKICAgY2luPj50OwovLyAgICB0PTE7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9CgovKgpyZXNldF90ZW1wbGF0ZS5iYXQKJSUlJSUlJSUrKysqJUBAQEBAJSVAJSUlJSUlJSUlJSVAQCUlJSUlJSMjKiojIyMlJSUKJSUlJSUlJSUjKiMlQEBAQEBAQCUlJSUlIyUlJUBAQEBAJSMjIyMqKiMjIyMlJUBAQEAKJSUlJSUlJSUjIyVAQEBAQEBAKisrKysrKysrKyojQEBAQCUjIyMjJSUlJUBAQEBAQEAKJSUlJSUlJSUjJSVAQEBAQCMrKysrKysrKysrKytAQEBAQEBAJSUlQEBAQEBAQEBAQEAKQCUjJSUjJSMlJSUlJSUqKysrKysrKysrKysrKysqQEBAQEBAIysrKysrKyojIyMjIyMKJSUlJSUjJSUlIyMjKysrKysrKysrKysrKysrKysrKiNAQEAjKioqKioqKiMqKioqKioKIyUlJSUlJSUlJSUqKysrKysqKioqKiorKysrKysrKysqKisrKiMjKiorKysqKiojIyUKJSUjJSUlJSVAQCorKysrKiVAQCMqKioqKiMlIyorKysrKysrKysrKysqKiMjJUBAQCUKJSUlJSUlJSUlIysqKiojQEBAIysrKisrKkBAQCMqKiorKysrKysrKiMlQEAlIyMlJSUKJSUlJSUlJSUjKiojIyMlQEAjKysrKysrKyNAQEAjKiMqKisrKiojIyUjIyMjIyVAQEAKJSUlJSUlJSUlKiojIyMjJSMrKyojIyorKypAQEAlIyMjKioqI0BAQEBAJSUlJUBAQEAKJSUlJSUlJSUlIyojIyMjIyoqI0BAQEBAKioqJSUlJSUjIyolQEBAQEBAQEAlJUBAJSUKJSUlJSUlJSUjJSoqIyMjIyMjJSVAQCUjIyUlJSUlJSUjIyVAQEBAQEBAQEAlIyoqKioKJUBAJSUlIyMjQEAlIyUlJUAlJUBAQEBAQEAlJSUlJSUlQEBAQEBAQEBAQEBAJSMqKiMKJSUlJSUlJSUlQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAjIyMKJSUlIyUlJSUlQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAKJSUlJSUlJSUlQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCUKJSUlJSUlJSUlQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCUKKi8KCgoK