// Author: 4uckd3v - Nguyen Cao Duc
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX_N = 2e5;
const int MAX_Q = 2e5;
const int MOD = 1e9 + 7;
struct Query {
int u, v, w;
Query() {};
Query(int u, int v, int w) : u(u), v(v), w(w) {};
};
int n, q;
int a[MAX_N + 5];
Query queries[MAX_Q + 5];
vector<int> adj[MAX_N + 5];
namespace SUBTASK_1 {
const int N = 5000;
const int Q = 5000;
int b[N + 5], par[N + 5], depth[N + 5];
void dfs(int u, int p) {
par[u] = p;
depth[u] = depth[p] + 1;
for (int v : adj[u]) {
if (v == p) continue;
dfs(v, u);
};
};
void updatePath(int u, int v, int w) {
if (depth[u] > depth[v]) swap(u, v);
while (depth[v] > depth[u]) {
b[v] %= w;
v = par[v];
};
while (u != v) {
b[u] %= w, b[v] %= w;
u = par[u], v = par[v];
};
b[u] %= w;
};
void Solve() {
for (int u = 1; u <= n; u++) {
b[u] = a[u];
};
dfs(1, 1);
for (int t = 1; t <= q; t++) {
int u = queries[t].u, v = queries[t].v, w = queries[t].w;
updatePath(u, v, w);
ll res = 0;
for (int u = 1; u <= n; u++) res += b[u] % t;
cout << res << '\n';
};
};
}; // namespace SUBTASK_1
namespace SUBTASK_2 {
const int N = MAX_N;
const int VAL = 2;
int b[N + 5];
set<int> pos[VAL + 1];
ll curSum;
bool checkSubtask() {
for (int u = 1; u <= n; u++) {
if (a[u] > VAL) return false;
if (adj[u].size() > 2) return false;
};
return true;
};
void del(int u, int v, int w) {
while (pos[w].lower_bound(u) != pos[w].end()) {
auto it = pos[w].lower_bound(u);
if (*it > v) break;
int node = *it;
curSum -= a[node];
// cerr << w << ' ' << node << endl;
pos[w].erase(it);
};
};
void Solve() {
curSum = 0;
for (int u = 1; u <= n; u++) {
b[u] = a[u];
pos[b[u]].insert(u);
curSum += b[u];
};
for (int t = 1; t <= q; t++) {
int u = queries[t].u, v = queries[t].v, w = queries[t].w;
if (u > v) swap(u, v);
if (w == 1) {
del(u, v, 1);
del(u, v, 2);
} else if (w == 2) {
del(u, v, 2);
};
if (t == 1) {
cout << 0 << '\n';
continue;
};
if (t == 2) {
cout << pos[1].size() << '\n';
continue;
};
cout << curSum << '\n';
};
};
}; // namespace SUBTASK_2
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen("pine.INP", "r")) {
freopen("pine.INP", "r", stdin);
freopen("pine.OUT", "w", stdout);
};
cin >> n >> q;
for (int u = 1; u <= n; u++) cin >> a[u];
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
};
for (int t = 1; t <= q; t++) {
cin >> queries[t].u >> queries[t].v >> queries[t].w;
};
if (n <= 5000 && q <= 5000)
return SUBTASK_1::Solve(), 0;
if (SUBTASK_2::checkSubtask())
return SUBTASK_2::Solve(), 0;
};
Ly8gQXV0aG9yOiA0dWNrZDN2IC0gTmd1eWVuIENhbyBEdWMKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmNvbnN0IGludCBNQVhfTiA9IDJlNTsKY29uc3QgaW50IE1BWF9RID0gMmU1Owpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKCnN0cnVjdCBRdWVyeSB7CiAgICBpbnQgdSwgdiwgdzsKICAgIFF1ZXJ5KCkge307CiAgICBRdWVyeShpbnQgdSwgaW50IHYsIGludCB3KSA6IHUodSksIHYodiksIHcodykge307Cn07CgppbnQgbiwgcTsKaW50IGFbTUFYX04gKyA1XTsKUXVlcnkgcXVlcmllc1tNQVhfUSArIDVdOwp2ZWN0b3I8aW50PiBhZGpbTUFYX04gKyA1XTsKCm5hbWVzcGFjZSBTVUJUQVNLXzEgewogICAgY29uc3QgaW50IE4gPSA1MDAwOwogICAgY29uc3QgaW50IFEgPSA1MDAwOwoKICAgIGludCBiW04gKyA1XSwgcGFyW04gKyA1XSwgZGVwdGhbTiArIDVdOwoKICAgIHZvaWQgZGZzKGludCB1LCBpbnQgcCkgewogICAgICAgIHBhclt1XSA9IHA7CiAgICAgICAgZGVwdGhbdV0gPSBkZXB0aFtwXSArIDE7CgogICAgICAgIGZvciAoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaWYgKHYgPT0gcCkgY29udGludWU7CiAgICAgICAgICAgIGRmcyh2LCB1KTsKICAgICAgICB9OwogICAgfTsKCiAgICB2b2lkIHVwZGF0ZVBhdGgoaW50IHUsIGludCB2LCBpbnQgdykgewogICAgICAgIGlmIChkZXB0aFt1XSA+IGRlcHRoW3ZdKSBzd2FwKHUsIHYpOwogICAgICAgIHdoaWxlIChkZXB0aFt2XSA+IGRlcHRoW3VdKSB7CiAgICAgICAgICAgIGJbdl0gJT0gdzsKICAgICAgICAgICAgdiA9IHBhclt2XTsKICAgICAgICB9OwoKICAgICAgICB3aGlsZSAodSAhPSB2KSB7CiAgICAgICAgICAgIGJbdV0gJT0gdywgYlt2XSAlPSB3OwogICAgICAgICAgICB1ID0gcGFyW3VdLCB2ID0gcGFyW3ZdOwogICAgICAgIH07CgogICAgICAgIGJbdV0gJT0gdzsKICAgIH07CgogICAgdm9pZCBTb2x2ZSgpIHsKICAgICAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKICAgICAgICAgICAgYlt1XSA9IGFbdV07CiAgICAgICAgfTsKCiAgICAgICAgZGZzKDEsIDEpOwoKICAgICAgICBmb3IgKGludCB0ID0gMTsgdCA8PSBxOyB0KyspIHsKICAgICAgICAgICAgaW50IHUgPSBxdWVyaWVzW3RdLnUsIHYgPSBxdWVyaWVzW3RdLnYsIHcgPSBxdWVyaWVzW3RdLnc7CiAgICAgICAgICAgIHVwZGF0ZVBhdGgodSwgdiwgdyk7CgogICAgICAgICAgICBsbCByZXMgPSAwOwogICAgICAgICAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHJlcyArPSBiW3VdICUgdDsKCiAgICAgICAgICAgIGNvdXQgPDwgcmVzIDw8ICdcbic7CiAgICAgICAgfTsKICAgIH07Cn07ICAvLyBuYW1lc3BhY2UgU1VCVEFTS18xCgpuYW1lc3BhY2UgU1VCVEFTS18yIHsKICAgIGNvbnN0IGludCBOID0gTUFYX047CiAgICBjb25zdCBpbnQgVkFMID0gMjsKCiAgICBpbnQgYltOICsgNV07CiAgICBzZXQ8aW50PiBwb3NbVkFMICsgMV07CiAgICBsbCBjdXJTdW07CgogICAgYm9vbCBjaGVja1N1YnRhc2soKSB7CiAgICAgICAgZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CiAgICAgICAgICAgIGlmIChhW3VdID4gVkFMKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmIChhZGpbdV0uc2l6ZSgpID4gMikgcmV0dXJuIGZhbHNlOwogICAgICAgIH07CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIHZvaWQgZGVsKGludCB1LCBpbnQgdiwgaW50IHcpIHsKICAgICAgICB3aGlsZSAocG9zW3ddLmxvd2VyX2JvdW5kKHUpICE9IHBvc1t3XS5lbmQoKSkgewogICAgICAgICAgICBhdXRvIGl0ID0gcG9zW3ddLmxvd2VyX2JvdW5kKHUpOwogICAgICAgICAgICBpZiAoKml0ID4gdikgYnJlYWs7CgogICAgICAgICAgICBpbnQgbm9kZSA9ICppdDsKICAgICAgICAgICAgY3VyU3VtIC09IGFbbm9kZV07CiAgICAgICAgICAgIC8vIGNlcnIgPDwgdyA8PCAnICcgPDwgbm9kZSA8PCBlbmRsOwogICAgICAgICAgICBwb3Nbd10uZXJhc2UoaXQpOwogICAgICAgIH07CiAgICB9OwoKICAgIHZvaWQgU29sdmUoKSB7CiAgICAgICAgY3VyU3VtID0gMDsKICAgICAgICBmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKICAgICAgICAgICAgYlt1XSA9IGFbdV07CiAgICAgICAgICAgIHBvc1tiW3VdXS5pbnNlcnQodSk7CiAgICAgICAgICAgIGN1clN1bSArPSBiW3VdOwogICAgICAgIH07CgogICAgICAgIGZvciAoaW50IHQgPSAxOyB0IDw9IHE7IHQrKykgewogICAgICAgICAgICBpbnQgdSA9IHF1ZXJpZXNbdF0udSwgdiA9IHF1ZXJpZXNbdF0udiwgdyA9IHF1ZXJpZXNbdF0udzsKICAgICAgICAgICAgaWYgKHUgPiB2KSBzd2FwKHUsIHYpOwoKICAgICAgICAgICAgaWYgKHcgPT0gMSkgewogICAgICAgICAgICAgICAgZGVsKHUsIHYsIDEpOwogICAgICAgICAgICAgICAgZGVsKHUsIHYsIDIpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHcgPT0gMikgewogICAgICAgICAgICAgICAgZGVsKHUsIHYsIDIpOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaWYgKHQgPT0gMSkgewogICAgICAgICAgICAgICAgY291dCA8PCAwIDw8ICdcbic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmICh0ID09IDIpIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgcG9zWzFdLnNpemUoKSA8PCAnXG4nOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBjb3V0IDw8IGN1clN1bSA8PCAnXG4nOwogICAgICAgIH07CiAgICB9Owp9OyAgLy8gbmFtZXNwYWNlIFNVQlRBU0tfMgoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGlmIChmb3BlbigicGluZS5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbigicGluZS5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJwaW5lLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH07CgogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgY2luID4+IGFbdV07CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfTsKCiAgICBmb3IgKGludCB0ID0gMTsgdCA8PSBxOyB0KyspIHsKICAgICAgICBjaW4gPj4gcXVlcmllc1t0XS51ID4+IHF1ZXJpZXNbdF0udiA+PiBxdWVyaWVzW3RdLnc7CiAgICB9OwoKICAgIGlmIChuIDw9IDUwMDAgJiYgcSA8PSA1MDAwKQogICAgICAgIHJldHVybiBTVUJUQVNLXzE6OlNvbHZlKCksIDA7CiAgICBpZiAoU1VCVEFTS18yOjpjaGVja1N1YnRhc2soKSkKICAgICAgICByZXR1cm4gU1VCVEFTS18yOjpTb2x2ZSgpLCAwOwp9Ow==