// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define rep(i, n) for(int i=0; i<(n); ++i)
#define red(i, n) for(int i=(n)-1; i>=0; --i)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ar(x) array<int, (x)>
#define all(x) x.begin(), x.end()
#define task "icebearat"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll LLinf = 1e18 + 27092008;
const int N = 2e5 + 5;
int numNode, numQuery;
vector<int> G[N];
int sz[N], heavy_child[N];
int tin[N], tout[N], etour[N], timer = 0;
void DFS(int u, int par) {
tin[u] = ++timer;
etour[timer] = u;
sz[u] = 1;
int max_sz = 0;
for(int v : G[u])
if (v != par) {
DFS(v, u);
sz[u] += sz[v];
if (max_sz < sz[v]) {
max_sz = sz[v];
heavy_child[u] = v;
}
}
tout[u] = timer;
}
map<int, int> cntDiv;
ll ans = 0;
int a[N];
void add(int x) { cntDiv[a[x]]++; }
void del(int x) { cntDiv[a[x]]--; }
void dsu_ontree(int u, int par, bool keep) {
for(int v : G[u])
if (v != par && v != heavy_child[u])
dsu_ontree(v, u, false);
if (heavy_child[u] != 0)
dsu_ontree(heavy_child[u], u, true);
ans += cntDiv[1];
add(u);
for(int v : G[u])
if (v != par && v != heavy_child[u]) {
FOR(i, tin[v], tout[v])
if (a[u] % a[etour[i]] == 0)
ans += cntDiv[a[u] / a[etour[i]]];
FOR(i, tin[v], tout[v])
add(etour[i]);
}
if (keep == false) {
FOR(i, tin[u], tout[u])
del(etour[i]);
}
}
void solve() {
cin >> numNode;
FOR(i, 1, numNode - 1) {
int u, v;
cin >> u >> v;
G[u].pb(v);
G[v].pb(u);
}
FOR(i, 1, numNode) cin >> a[i];
DFS(1, -1);
dsu_ontree(1, -1, false);
cout << ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) solve();
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aWksIGludD4gaWlpOwoKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIEZPUlIoaSxhLGIpIGZvcihpbnQgaT0oYSk7IGk+PShiKTsgLS1pKQojZGVmaW5lIHJlcChpLCBuKSBmb3IoaW50IGk9MDsgaTwobik7ICsraSkKI2RlZmluZSByZWQoaSwgbikgZm9yKGludCBpPShuKS0xOyBpPj0wOyAtLWkpCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBhcih4KSBhcnJheTxpbnQsICh4KT4KI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgdGFzayAiaWNlYmVhcmF0IgoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBpbmYgPSAxZTkgKyAyNzA5MjAwODsKY29uc3QgbGwgTExpbmYgPSAxZTE4ICsgMjcwOTIwMDg7CmNvbnN0IGludCBOID0gMmU1ICsgNTsKaW50IG51bU5vZGUsIG51bVF1ZXJ5Owp2ZWN0b3I8aW50PiBHW05dOwppbnQgc3pbTl0sIGhlYXZ5X2NoaWxkW05dOwppbnQgdGluW05dLCB0b3V0W05dLCBldG91cltOXSwgdGltZXIgPSAwOwoKdm9pZCBERlMoaW50IHUsIGludCBwYXIpIHsKCXRpblt1XSA9ICsrdGltZXI7CglldG91clt0aW1lcl0gPSB1OwoJc3pbdV0gPSAxOwoJaW50IG1heF9zeiA9IDA7CgkKCWZvcihpbnQgdiA6IEdbdV0pCgkJaWYgKHYgIT0gcGFyKSB7CgkJCURGUyh2LCB1KTsKCQkJc3pbdV0gKz0gc3pbdl07CgkJCQoJCQlpZiAobWF4X3N6IDwgc3pbdl0pIHsKCQkJCW1heF9zeiA9IHN6W3ZdOwoJCQkJaGVhdnlfY2hpbGRbdV0gPSB2OwoJCQl9CgkJfQoJdG91dFt1XSA9IHRpbWVyOwp9CgptYXA8aW50LCBpbnQ+IGNudERpdjsKbGwgYW5zID0gMDsKaW50IGFbTl07Cgp2b2lkIGFkZChpbnQgeCkgeyBjbnREaXZbYVt4XV0rKzsgfQp2b2lkIGRlbChpbnQgeCkgeyBjbnREaXZbYVt4XV0tLTsgfQp2b2lkIGRzdV9vbnRyZWUoaW50IHUsIGludCBwYXIsIGJvb2wga2VlcCkgewoJZm9yKGludCB2IDogR1t1XSkKCQlpZiAodiAhPSBwYXIgJiYgdiAhPSBoZWF2eV9jaGlsZFt1XSkKCQkJZHN1X29udHJlZSh2LCB1LCBmYWxzZSk7CgkKCWlmIChoZWF2eV9jaGlsZFt1XSAhPSAwKQoJCWRzdV9vbnRyZWUoaGVhdnlfY2hpbGRbdV0sIHUsIHRydWUpOwoJCQoJYW5zICs9IGNudERpdlsxXTsKCWFkZCh1KTsJCglmb3IoaW50IHYgOiBHW3VdKQoJCWlmICh2ICE9IHBhciAmJiB2ICE9IGhlYXZ5X2NoaWxkW3VdKSB7CgkJCUZPUihpLCB0aW5bdl0sIHRvdXRbdl0pCgkJCQlpZiAoYVt1XSAlIGFbZXRvdXJbaV1dID09IDApCgkJCQkJYW5zICs9IGNudERpdlthW3VdIC8gYVtldG91cltpXV1dOwoJCQlGT1IoaSwgdGluW3ZdLCB0b3V0W3ZdKQoJCQkJYWRkKGV0b3VyW2ldKTsKCQl9CgkJCglpZiAoa2VlcCA9PSBmYWxzZSkgewoJCUZPUihpLCB0aW5bdV0sIHRvdXRbdV0pCgkJCWRlbChldG91cltpXSk7Cgl9Cn0KCnZvaWQgc29sdmUoKSB7CgljaW4gPj4gbnVtTm9kZTsKCUZPUihpLCAxLCBudW1Ob2RlIC0gMSkgewoJCWludCB1LCB2OwoJCWNpbiA+PiB1ID4+IHY7CgkJR1t1XS5wYih2KTsKCQlHW3ZdLnBiKHUpOwoJfQoJRk9SKGksIDEsIG51bU5vZGUpIGNpbiA+PiBhW2ldOwoKCURGUygxLCAtMSk7Cglkc3Vfb250cmVlKDEsIC0xLCBmYWxzZSk7CgkKCWNvdXQgPDwgYW5zOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgY2luID4+IHRjOwogICAgd2hpbGUodGMtLSkgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==