#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ii pair<int, int>
#define fi first
#define se second
using namespace std;
const int maxn = 3e5;
struct Edge
{
int x, y, c;
Edge(int x = 0, int y = 0, int c = 0) :
x(x), y(y), c(c) {};
};
int subtask, n, q, ans = 0, cnt[4 * maxn + 10];
Edge edges[maxn + 10];
vector<ii> v;
ii query[maxn + 10];
int get_id(int x, int color)
{
return lower_bound(v.begin(), v.end(), ii(x, color)) - v.begin();
}
int get(int id, int color)
{
int x = edges[id].x;
int y = edges[id].y;
int quantity = ((cnt[get_id(x, color)] != 0) + (cnt[get_id(y, color)] != 0));
if (quantity == 1)
return 0;
else if (quantity == 2)
return -1;
return 1;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("TREE-EDGE-COLOR-QUERIES.INP", "r"))
{
freopen("TREE-EDGE-COLOR-QUERIES.INP", "r", stdin);
freopen("TREE-EDGE-COLOR-QUERIES.OUT", "w", stdout);
}
cin >> subtask;
cin >> n;
for (int i = 1; i < n; i++)
{
int x, y, c;
cin >> x >> y >> c;
edges[i] = Edge(x, y, c);
v.push_back(ii(x, c));
v.push_back(ii(y, c));
}
cin >> q;
for (int j = 1; j <= q; j++)
{
int i, d;
cin >> i >> d;
int x = edges[i].x;
int y = edges[i].y;
v.push_back(ii(x, d));
v.push_back(ii(y, d));
query[j] = ii(i, d);
}
sort(v.begin(), v.end());
v.resize(unique(v.begin(), v.end()) - v.begin());
for (int i = 1; i < n; i++)
{
int x = edges[i].x;
int y = edges[i].y;
int color = edges[i].c;
ans += get(i, color);
cnt[get_id(x, color)]++;
cnt[get_id(y, color)]++;
}
cout << ans << ' ';
for (int i = 1; i <= q; i++)
{
int id = query[i].fi;
int d = query[i].se;
int x = edges[id].x;
int y = edges[id].y;
int c = edges[id].c;
cnt[get_id(x, c)]--;
cnt[get_id(y, c)]--;
ans += -get(id, c) + get(id, d);
cnt[get_id(x, d)]++;
cnt[get_id(y, d)]++;
cout << ans << ' ';
edges[id].c = d;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG1heG4gPSAzZTU7CgpzdHJ1Y3QgRWRnZQp7CiAgICBpbnQgeCwgeSwgYzsKCiAgICBFZGdlKGludCB4ID0gMCwgaW50IHkgPSAwLCBpbnQgYyA9IDApIDogCiAgICAgICAgeCh4KSwgeSh5KSwgYyhjKSB7fTsKfTsKCmludCBzdWJ0YXNrLCBuLCBxLCBhbnMgPSAwLCBjbnRbNCAqIG1heG4gKyAxMF07CkVkZ2UgZWRnZXNbbWF4biArIDEwXTsKdmVjdG9yPGlpPiB2OwppaSBxdWVyeVttYXhuICsgMTBdOwoKaW50IGdldF9pZChpbnQgeCwgaW50IGNvbG9yKQp7CiAgICByZXR1cm4gbG93ZXJfYm91bmQodi5iZWdpbigpLCB2LmVuZCgpLCBpaSh4LCBjb2xvcikpIC0gdi5iZWdpbigpOwp9CmludCBnZXQoaW50IGlkLCBpbnQgY29sb3IpCnsKICAgIGludCB4ID0gZWRnZXNbaWRdLng7CiAgICBpbnQgeSA9IGVkZ2VzW2lkXS55OwogICAgaW50IHF1YW50aXR5ID0gKChjbnRbZ2V0X2lkKHgsIGNvbG9yKV0gIT0gMCkgKyAoY250W2dldF9pZCh5LCBjb2xvcildICE9IDApKTsKICAgIGlmIChxdWFudGl0eSA9PSAxKQogICAgICAgIHJldHVybiAwOwogICAgZWxzZSBpZiAocXVhbnRpdHkgPT0gMikKICAgICAgICByZXR1cm4gLTE7CiAgICByZXR1cm4gMTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiVFJFRS1FREdFLUNPTE9SLVFVRVJJRVMuSU5QIiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKCJUUkVFLUVER0UtQ09MT1ItUVVFUklFUy5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJUUkVFLUVER0UtQ09MT1ItUVVFUklFUy5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IHN1YnRhc2s7CiAgICBjaW4gPj4gbjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGludCB4LCB5LCBjOwogICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gYzsKICAgICAgICBlZGdlc1tpXSA9IEVkZ2UoeCwgeSwgYyk7CiAgICAgICAgdi5wdXNoX2JhY2soaWkoeCwgYykpOwogICAgICAgIHYucHVzaF9iYWNrKGlpKHksIGMpKTsKICAgIH0KCiAgICBjaW4gPj4gcTsKICAgIGZvciAoaW50IGogPSAxOyBqIDw9IHE7IGorKykKICAgIHsKICAgICAgICBpbnQgaSwgZDsKICAgICAgICBjaW4gPj4gaSA+PiBkOwogICAgICAgIGludCB4ID0gZWRnZXNbaV0ueDsKICAgICAgICBpbnQgeSA9IGVkZ2VzW2ldLnk7CiAgICAgICAgdi5wdXNoX2JhY2soaWkoeCwgZCkpOwogICAgICAgIHYucHVzaF9iYWNrKGlpKHksIGQpKTsKICAgICAgICBxdWVyeVtqXSA9IGlpKGksIGQpOwogICAgfQogICAgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOwogICAgdi5yZXNpemUodW5pcXVlKHYuYmVnaW4oKSwgdi5lbmQoKSkgLSB2LmJlZ2luKCkpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IHggPSBlZGdlc1tpXS54OwogICAgICAgIGludCB5ID0gZWRnZXNbaV0ueTsKICAgICAgICBpbnQgY29sb3IgPSBlZGdlc1tpXS5jOwogICAgICAgIGFucyArPSBnZXQoaSwgY29sb3IpOwogICAgICAgIGNudFtnZXRfaWQoeCwgY29sb3IpXSsrOwogICAgICAgIGNudFtnZXRfaWQoeSwgY29sb3IpXSsrOwogICAgfQogICAgY291dCA8PCBhbnMgPDwgJyAnOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgewogICAgICAgIGludCBpZCA9IHF1ZXJ5W2ldLmZpOwogICAgICAgIGludCBkID0gcXVlcnlbaV0uc2U7CiAgICAgICAgaW50IHggPSBlZGdlc1tpZF0ueDsKICAgICAgICBpbnQgeSA9IGVkZ2VzW2lkXS55OwogICAgICAgIGludCBjID0gZWRnZXNbaWRdLmM7CiAgICAgICAgY250W2dldF9pZCh4LCBjKV0tLTsKICAgICAgICBjbnRbZ2V0X2lkKHksIGMpXS0tOwogICAgICAgIGFucyArPSAtZ2V0KGlkLCBjKSArIGdldChpZCwgZCk7CiAgICAgICAgY250W2dldF9pZCh4LCBkKV0rKzsKICAgICAgICBjbnRbZ2V0X2lkKHksIGQpXSsrOwogICAgICAgIGNvdXQgPDwgYW5zIDw8ICcgJzsKICAgICAgICBlZGdlc1tpZF0uYyA9IGQ7CiAgICB9Cn0=