/*
Em la may troi trong gio
Anh la cay nhieu dan do
*/
#include "bits/stdc++.h"
using namespace std;
#define ll long long
#define endl '\n'
#define fi first
#define se second
#define vall(a) (a).begin(), (a).end()
#define sze(a) (int)a.size()
#define pii pair<ll, ll>
#define ep emplace_back
#define pb push_back
#define pf push_front
const int mod = 1e9 + 7;
const signed N = 1e5 + 5;
const ll oo = 1e18;
int n, sz[N];
vector<pii> adj[N];
vector<int> uoc[N];
bool del[N], check[N];
ll ans = 0, cnt[N], boi[N], a[N];
int get_sz(int u, int p = 0) {
sz[u] = 1;
for (auto [v, c] : adj[u]) {
if(v == p || del[v]) continue;
sz[u] += get_sz(v ,u);
}
return sz[u];
}
int get_cen(int sigma, int u, int p = 0) {
for (auto[v, c] : adj[u]) if(v != p && !del[v] && sz[v] > (sigma >> 1)) return get_cen(sigma, v, u);
return u;
}
stack<int> s;
void calc(int u, int p, ll Gcd, ll depth, bool type) {
if (type) {
ans = max(ans, 1ll * (depth + boi[Gcd]) * Gcd);
for (int val : uoc[Gcd]) ans = max(ans, 1ll * (depth + cnt[val]) * val);
} else {
cnt[Gcd] = max(cnt[Gcd], depth);
if (!check[Gcd]) {
s.push(Gcd);
check[Gcd] = true;
}
for (int val : uoc[Gcd]) {
boi[val] = max(boi[val], depth);
if (!check[val]) {
s.push(val);
check[val] = true;
}
}
}
for (auto[v, c] : adj[u]) {
if (v == p || del[v]) continue;
calc(v, u, __gcd(Gcd, a[v]), depth + c, type);
}
}
void decomp(int u = 1) {
u = get_cen(get_sz(u), u);
del[u] = true;
for (auto [v, c] : adj[u]) {
if (del[v]) continue;
calc(v, u, __gcd(a[u], a[v]), c, 1);
calc(v, u, __gcd(a[u], a[v]), c, 0);
}
while(!s.empty()) {
cnt[s.top()] = boi[s.top()] = 0;
check[s.top()] = false;
s.pop();
}
for (auto[v, c] : adj[u]) if (!del[v]) decomp(v);
}
ll Max = 0;
void output() {
for(int x = 1; x <= Max; ++x) {
for (int i = 1; i * i <= x; ++i) {
if (x % i == 0) {
uoc[x].pb(i);
if (x / i != i) uoc[x].pb(x / i);
}
}
}
decomp();
cout << ans;
return;
}
void input() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
Max = max(Max, a[i]);
}
for (int i = 1; i < n; ++i) {
int u, v, c;
cin >> u >> v >> c;
adj[u].ep(v, c);
adj[v].ep(u, c);
}
output();
return;
}
signed main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
input();
cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << 's' << endl;
return 0;
}
LyoKCUVtIGxhIG1heSB0cm9pIHRyb25nIGdpbwoJQW5oIGxhIGNheSBuaGlldSBkYW4gZG8KKi8KCiNpbmNsdWRlICJiaXRzL3N0ZGMrKy5oIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHZhbGwoYSkgKGEpLmJlZ2luKCksIChhKS5lbmQoKQojZGVmaW5lIHN6ZShhKSAoaW50KWEuc2l6ZSgpCiNkZWZpbmUgcGlpIHBhaXI8bGwsIGxsPgoKCiNkZWZpbmUgZXAgZW1wbGFjZV9iYWNrCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAoKCmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBzaWduZWQgTiA9IDFlNSArIDU7CmNvbnN0IGxsIG9vID0gMWUxODsKCmludCBuLCBzeltOXTsKdmVjdG9yPHBpaT4gYWRqW05dOwp2ZWN0b3I8aW50PiB1b2NbTl07CmJvb2wgZGVsW05dLCBjaGVja1tOXTsKbGwgYW5zID0gMCwgY250W05dLCBib2lbTl0sIGFbTl07CgppbnQgZ2V0X3N6KGludCB1LCBpbnQgcCA9IDApIHsKICAgIHN6W3VdID0gMTsKICAgIGZvciAoYXV0byBbdiwgY10gOiBhZGpbdV0pIHsKICAgICAgICBpZih2ID09IHAgfHwgZGVsW3ZdKSBjb250aW51ZTsKICAgICAgICBzelt1XSArPSBnZXRfc3oodiAsdSk7CiAgICB9CiAgICByZXR1cm4gc3pbdV07Cn0KaW50IGdldF9jZW4oaW50IHNpZ21hLCBpbnQgdSwgaW50IHAgPSAwKSB7CiAgICBmb3IgKGF1dG9bdiwgY10gOiBhZGpbdV0pIGlmKHYgIT0gcCAmJiAhZGVsW3ZdICYmIHN6W3ZdID4gKHNpZ21hID4+IDEpKSByZXR1cm4gZ2V0X2NlbihzaWdtYSwgdiwgdSk7CiAgICByZXR1cm4gdTsKfQoKc3RhY2s8aW50PiBzOwp2b2lkIGNhbGMoaW50IHUsIGludCBwLCBsbCBHY2QsIGxsIGRlcHRoLCBib29sIHR5cGUpIHsKICAgIGlmICh0eXBlKSB7CiAgICAgICAgYW5zID0gbWF4KGFucywgMWxsICogKGRlcHRoICsgYm9pW0djZF0pICogR2NkKTsKICAgICAgICBmb3IgKGludCB2YWwgOiB1b2NbR2NkXSkgYW5zID0gbWF4KGFucywgMWxsICogKGRlcHRoICsgY250W3ZhbF0pICogdmFsKTsKICAgIH0gZWxzZSB7CiAgICAgICAgY250W0djZF0gPSBtYXgoY250W0djZF0sIGRlcHRoKTsKICAgICAgICBpZiAoIWNoZWNrW0djZF0pIHsKICAgICAgICAgICAgcy5wdXNoKEdjZCk7CiAgICAgICAgICAgIGNoZWNrW0djZF0gPSB0cnVlOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCB2YWwgOiB1b2NbR2NkXSkgewogICAgICAgICAgICBib2lbdmFsXSA9IG1heChib2lbdmFsXSwgZGVwdGgpOwogICAgICAgICAgICBpZiAoIWNoZWNrW3ZhbF0pIHsKICAgICAgICAgICAgICAgIHMucHVzaCh2YWwpOwogICAgICAgICAgICAgICAgY2hlY2tbdmFsXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IgKGF1dG9bdiwgY10gOiBhZGpbdV0pIHsKICAgICAgICBpZiAodiA9PSBwIHx8IGRlbFt2XSkgY29udGludWU7CiAgICAgICAgY2FsYyh2LCB1LCBfX2djZChHY2QsIGFbdl0pLCBkZXB0aCArIGMsIHR5cGUpOwogICAgfQp9Cgp2b2lkIGRlY29tcChpbnQgdSA9IDEpIHsKICAgIHUgPSBnZXRfY2VuKGdldF9zeih1KSwgdSk7CiAgICBkZWxbdV0gPSB0cnVlOwogICAgZm9yIChhdXRvIFt2LCBjXSA6IGFkalt1XSkgewogICAgICAgIGlmIChkZWxbdl0pIGNvbnRpbnVlOwogICAgICAgIGNhbGModiwgdSwgX19nY2QoYVt1XSwgYVt2XSksIGMsIDEpOwogICAgICAgIGNhbGModiwgdSwgX19nY2QoYVt1XSwgYVt2XSksIGMsIDApOwogICAgfQogICAgd2hpbGUoIXMuZW1wdHkoKSkgewogICAgICAgIGNudFtzLnRvcCgpXSA9IGJvaVtzLnRvcCgpXSA9IDA7CiAgICAgICAgY2hlY2tbcy50b3AoKV0gPSBmYWxzZTsKICAgICAgICBzLnBvcCgpOwogICAgfQogICAgZm9yIChhdXRvW3YsIGNdIDogYWRqW3VdKSBpZiAoIWRlbFt2XSkgZGVjb21wKHYpOwp9CgpsbCBNYXggPSAwOwoKdm9pZCBvdXRwdXQoKSB7CiAgICBmb3IoaW50IHggPSAxOyB4IDw9IE1heDsgKyt4KSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgKiBpIDw9IHg7ICsraSkgewogICAgICAgICAgICBpZiAoeCAlIGkgPT0gMCkgewogICAgICAgICAgICAgICAgdW9jW3hdLnBiKGkpOwogICAgICAgICAgICAgICAgaWYgKHggLyBpICE9IGkpIHVvY1t4XS5wYih4IC8gaSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBkZWNvbXAoKTsKICAgIGNvdXQgPDwgYW5zOwogICAgcmV0dXJuOwp9Cgp2b2lkIGlucHV0KCkgewoJY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBNYXggPSBtYXgoTWF4LCBhW2ldKTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaW50IHUsIHYsIGM7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiBjOwogICAgICAgIGFkalt1XS5lcCh2LCBjKTsKICAgICAgICBhZGpbdl0uZXAodSwgYyk7CiAgICB9CiAKICAgIG91dHB1dCgpOwogICAgcmV0dXJuOwp9CgpzaWduZWQgbWFpbiAoKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwoKICAgIGlucHV0KCk7CiAgICBjZXJyIDw8ICJUaW1lIGVsYXBzZWQ6ICIgPDwgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICdzJyA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K