#include<bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
// #define int long long
using ll = long long;
using pii = pair<int, int>;
const int N = 1e5 + 5;
const int A = 5e5 + 5;
const int LG = 17;
int n, a[N];
vector<pii> G[N];
ll ans = 0;
vector<int> Gr[A], onNode;
bool On[A];
ll dist[N];
int h[N];
/* ===================== LCA O(1) bằng Euler Tour + RMQ ===================== */
const int M = 2 * N;
const int LOGM = 20;
int E;
int eulerArr[M];
int depthArr[M];
int firstPos[N];
int lg2_[M + 1];
int st[LOGM][M];
struct Event {
int u, p, type, w;
};
inline void buildLCA(int root = 1) {
E = 0;
for (int i = 1; i <= n; ++i) firstPos[i] = -1;
h[root] = 0;
dist[root] = 0;
vector<Event> stck;
stck.reserve(2 * n);
stck.push_back({root, 0, 0, 0});
while (!stck.empty()) {
Event e = stck.back(); stck.pop_back();
if (e.type == 0) {
if (e.p != 0) {
h[e.u] = h[e.p] + 1;
dist[e.u] = dist[e.p] + e.w;
}
if (firstPos[e.u] == -1) firstPos[e.u] = E;
eulerArr[E] = e.u; depthArr[E] = h[e.u]; ++E;
auto &adj = G[e.u];
for (int i = (int)adj.size() - 1; i >= 0; --i) {
int v = adj[i].ft, w = adj[i].sc;
if (v == e.p) continue;
stck.push_back({e.u, e.p, 1, 0});
stck.push_back({v, e.u, 0, w});
}
} else {
eulerArr[E] = e.u; depthArr[E] = h[e.u]; ++E;
}
}
lg2_[1] = 0;
for (int i = 2; i <= E; ++i) lg2_[i] = lg2_[i >> 1] + 1;
for (int i = 0; i < E; ++i) st[0][i] = i;
for (int k = 1; (1 << k) <= E; ++k) {
int len = 1 << k, half = len >> 1;
for (int i = 0; i + len <= E; ++i) {
int x = st[k - 1][i];
int y = st[k - 1][i + half];
st[k][i] = (depthArr[x] < depthArr[y] ? x : y);
}
}
}
inline int lca(int u, int v) {
int L = firstPos[u], R = firstPos[v];
if (L > R) swap(L, R);
int k = lg2_[R - L + 1];
int i1 = st[k][L];
int i2 = st[k][R - (1 << k) + 1];
return (depthArr[i1] < depthArr[i2] ? eulerArr[i1] : eulerArr[i2]);
}
/* ========================================================================== */
inline ll getDist(int u, int v) {
int p = lca(u, v);
return dist[u] + dist[v] - 2LL * dist[p];
}
namespace subfull {
bool checksub() {
for (int i = 1; i <= n; i++) if (a[i] > 5000) return 0;
return 1;
}
void solve() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j * j <= a[i]; j++) {
if (a[i] % j == 0) {
if (!On[j]) On[j] = 1, onNode.push_back(j);
Gr[j].push_back(i);
if (j * j != a[i]) {
int t = a[i] / j;
if (!On[t]) On[t] = 1, onNode.push_back(t);
Gr[t].push_back(i);
}
}
}
}
buildLCA(1);
for (int g: onNode) {
int A = Gr[g][0];
int B = A;
ll len = 0;
for (int b: Gr[g]) {
ll val = getDist(A, b);
if (val > len) {
len = val;
B = b;
}
}
swap(A, B);
len = 0;
for (int b: Gr[g]) {
ll val = getDist(A, b);
if (val > len) {
len = val;
B = b;
}
}
ans = max(ans, len * (ll)g);
}
cout << ans << "\n";
}
};
inline void prepare() {
for (int i = 1; i <= n; i++) G[i].clear();
for (int i: onNode) {
On[i] = 0;
Gr[i].clear();
}
onNode.clear();
}
void solve() {
ans = 0;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i < n; i++) {
int u, v, w; cin >> u >> v >> w;
G[u].push_back({v, w});
G[v].push_back({u, w});
}
subfull::solve();
prepare();
return;
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false); cout.tie(NULL);
if (ifstream("TREE.INP")) {
freopen("TREE.INP", "r", stdin);
freopen("TREE.OUT", "w", stdout);
}
while (cin >> n) {
if (!n) break;
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4gLy8gTmVPV2FtaQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBmdCBmaXJzdAojZGVmaW5lIHNjIHNlY29uZAovLyAjZGVmaW5lIGludCBsb25nIGxvbmcKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIHBpaSA9IHBhaXI8aW50LCBpbnQ+OwoKY29uc3QgaW50IE4gID0gMWU1ICsgNTsKY29uc3QgaW50IEEgID0gNWU1ICsgNTsKY29uc3QgaW50IExHID0gMTc7CgppbnQgbiwgYVtOXTsKdmVjdG9yPHBpaT4gR1tOXTsKbGwgYW5zID0gMDsKCnZlY3RvcjxpbnQ+IEdyW0FdLCBvbk5vZGU7CmJvb2wgT25bQV07CmxsIGRpc3RbTl07CmludCBoW05dOwoKLyogPT09PT09PT09PT09PT09PT09PT09IExDQSBPKDEpIGLhurFuZyBFdWxlciBUb3VyICsgUk1RID09PT09PT09PT09PT09PT09PT09PSAqLwoKY29uc3QgaW50IE0gPSAyICogTjsgIApjb25zdCBpbnQgTE9HTSA9IDIwOwoKaW50IEU7CmludCBldWxlckFycltNXTsKaW50IGRlcHRoQXJyW01dOwppbnQgZmlyc3RQb3NbTl07CmludCBsZzJfW00gKyAxXTsKaW50IHN0W0xPR01dW01dOwoKc3RydWN0IEV2ZW50IHsKICAgIGludCB1LCBwLCB0eXBlLCB3Owp9OwoKaW5saW5lIHZvaWQgYnVpbGRMQ0EoaW50IHJvb3QgPSAxKSB7CiAgICBFID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgZmlyc3RQb3NbaV0gPSAtMTsKCiAgICBoW3Jvb3RdID0gMDsKICAgIGRpc3Rbcm9vdF0gPSAwOwoKICAgIHZlY3RvcjxFdmVudD4gc3RjazsKICAgIHN0Y2sucmVzZXJ2ZSgyICogbik7CiAgICBzdGNrLnB1c2hfYmFjayh7cm9vdCwgMCwgMCwgMH0pOwoKICAgIHdoaWxlICghc3Rjay5lbXB0eSgpKSB7CiAgICAgICAgRXZlbnQgZSA9IHN0Y2suYmFjaygpOyBzdGNrLnBvcF9iYWNrKCk7CiAgICAgICAgaWYgKGUudHlwZSA9PSAwKSB7CiAgICAgICAgICAgIGlmIChlLnAgIT0gMCkgewogICAgICAgICAgICAgICAgaFtlLnVdICAgID0gaFtlLnBdICsgMTsKICAgICAgICAgICAgICAgIGRpc3RbZS51XSA9IGRpc3RbZS5wXSArIGUudzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZmlyc3RQb3NbZS51XSA9PSAtMSkgZmlyc3RQb3NbZS51XSA9IEU7CiAgICAgICAgICAgIGV1bGVyQXJyW0VdID0gZS51OyBkZXB0aEFycltFXSA9IGhbZS51XTsgKytFOwoKICAgICAgICAgICAgYXV0byAmYWRqID0gR1tlLnVdOwogICAgICAgICAgICBmb3IgKGludCBpID0gKGludClhZGouc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgICAgICAgIGludCB2ID0gYWRqW2ldLmZ0LCB3ID0gYWRqW2ldLnNjOwogICAgICAgICAgICAgICAgaWYgKHYgPT0gZS5wKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIHN0Y2sucHVzaF9iYWNrKHtlLnUsIGUucCwgMSwgMH0pOyAgIAogICAgICAgICAgICAgICAgc3Rjay5wdXNoX2JhY2soe3YsICAgZS51LCAwLCB3fSk7ICAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGV1bGVyQXJyW0VdID0gZS51OyBkZXB0aEFycltFXSA9IGhbZS51XTsgKytFOwogICAgICAgIH0KICAgIH0KCiAgICBsZzJfWzFdID0gMDsKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IEU7ICsraSkgbGcyX1tpXSA9IGxnMl9baSA+PiAxXSArIDE7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBFOyArK2kpIHN0WzBdW2ldID0gaTsKICAgIGZvciAoaW50IGsgPSAxOyAoMSA8PCBrKSA8PSBFOyArK2spIHsKICAgICAgICBpbnQgbGVuID0gMSA8PCBrLCBoYWxmID0gbGVuID4+IDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgKyBsZW4gPD0gRTsgKytpKSB7CiAgICAgICAgICAgIGludCB4ID0gc3RbayAtIDFdW2ldOwogICAgICAgICAgICBpbnQgeSA9IHN0W2sgLSAxXVtpICsgaGFsZl07CiAgICAgICAgICAgIHN0W2tdW2ldID0gKGRlcHRoQXJyW3hdIDwgZGVwdGhBcnJbeV0gPyB4IDogeSk7CiAgICAgICAgfQogICAgfQp9CgppbmxpbmUgaW50IGxjYShpbnQgdSwgaW50IHYpIHsKICAgIGludCBMID0gZmlyc3RQb3NbdV0sIFIgPSBmaXJzdFBvc1t2XTsKICAgIGlmIChMID4gUikgc3dhcChMLCBSKTsKICAgIGludCBrICA9IGxnMl9bUiAtIEwgKyAxXTsKICAgIGludCBpMSA9IHN0W2tdW0xdOwogICAgaW50IGkyID0gc3Rba11bUiAtICgxIDw8IGspICsgMV07CiAgICByZXR1cm4gKGRlcHRoQXJyW2kxXSA8IGRlcHRoQXJyW2kyXSA/IGV1bGVyQXJyW2kxXSA6IGV1bGVyQXJyW2kyXSk7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCmlubGluZSBsbCBnZXREaXN0KGludCB1LCBpbnQgdikgewogICAgaW50IHAgPSBsY2EodSwgdik7CiAgICByZXR1cm4gZGlzdFt1XSArIGRpc3Rbdl0gLSAyTEwgKiBkaXN0W3BdOwp9CgpuYW1lc3BhY2Ugc3ViZnVsbCB7CmJvb2wgY2hlY2tzdWIoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGlmIChhW2ldID4gNTAwMCkgcmV0dXJuIDA7CiAgICByZXR1cm4gMTsKfQp2b2lkIHNvbHZlKCkgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogKiBqIDw9IGFbaV07IGorKykgewogICAgICAgICAgICBpZiAoYVtpXSAlIGogPT0gMCkgewogICAgICAgICAgICAgICAgaWYgKCFPbltqXSkgT25bal0gPSAxLCBvbk5vZGUucHVzaF9iYWNrKGopOwogICAgICAgICAgICAgICAgR3Jbal0ucHVzaF9iYWNrKGkpOwoKICAgICAgICAgICAgICAgIGlmIChqICogaiAhPSBhW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHQgPSBhW2ldIC8gajsKICAgICAgICAgICAgICAgICAgICBpZiAoIU9uW3RdKSBPblt0XSA9IDEsIG9uTm9kZS5wdXNoX2JhY2sodCk7CiAgICAgICAgICAgICAgICAgICAgR3JbdF0ucHVzaF9iYWNrKGkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGJ1aWxkTENBKDEpOwoKICAgIGZvciAoaW50IGc6IG9uTm9kZSkgewogICAgICAgIGludCBBID0gR3JbZ11bMF07CiAgICAgICAgaW50IEIgPSBBOwogICAgICAgIGxsIGxlbiA9IDA7CiAgICAgICAgZm9yIChpbnQgYjogR3JbZ10pIHsKICAgICAgICAgICAgbGwgdmFsID0gZ2V0RGlzdChBLCBiKTsKICAgICAgICAgICAgaWYgKHZhbCA+IGxlbikgewogICAgICAgICAgICAgICAgbGVuID0gdmFsOwogICAgICAgICAgICAgICAgQiA9IGI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3dhcChBLCBCKTsKICAgICAgICBsZW4gPSAwOwogICAgICAgIGZvciAoaW50IGI6IEdyW2ddKSB7CiAgICAgICAgICAgIGxsIHZhbCA9IGdldERpc3QoQSwgYik7CiAgICAgICAgICAgIGlmICh2YWwgPiBsZW4pIHsKICAgICAgICAgICAgICAgIGxlbiA9IHZhbDsKICAgICAgICAgICAgICAgIEIgPSBiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGFucyA9IG1heChhbnMsIGxlbiAqIChsbClnKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7Cn0KfTsKCmlubGluZSB2b2lkIHByZXBhcmUoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIEdbaV0uY2xlYXIoKTsKICAgIGZvciAoaW50IGk6IG9uTm9kZSkgewogICAgICAgIE9uW2ldID0gMDsKICAgICAgICBHcltpXS5jbGVhcigpOwogICAgfQogICAgb25Ob2RlLmNsZWFyKCk7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBhbnMgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHUsIHYsIHc7IGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBHW3VdLnB1c2hfYmFjayh7diwgd30pOwogICAgICAgIEdbdl0ucHVzaF9iYWNrKHt1LCB3fSk7CiAgICB9CiAgICBzdWJmdWxsOjpzb2x2ZSgpOwogICAgcHJlcGFyZSgpOwogICAgcmV0dXJuOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGNpbi50aWUoTlVMTCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNvdXQudGllKE5VTEwpOwogICAgaWYgKGlmc3RyZWFtKCJUUkVFLklOUCIpKSB7CiAgICAgICAgZnJlb3BlbigiVFJFRS5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJUUkVFLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIHdoaWxlIChjaW4gPj4gbikgewogICAgICAgIGlmICghbikgYnJlYWs7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==