//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "o"
#define ff(i, a, b) for(auto i=(a); i<=(b); ++i)
#define ffr(i, b, a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll ran(ll l, ll r)
{
return uniform_int_distribution<ll> (l, r)(rng);
}
inline void rf()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if(fopen(file".inp","r"))
{
freopen(file".inp","r",stdin);
freopen(file".out","w",stdout);
}
}
const int mod=998244353;
const int maxn=3e5+15;
const ll inf=5e16;
template<typename T> inline void add(T &x, const T &y)
{
x+=y;
if(x>=mod) x-=mod;
if(x<0) x+=mod;
}
template<typename T> inline bool maxi(T &a, T b)
{
if(a>=b) return 0;
a=b; return 1;
}
template<typename T> inline bool mini(T &a, T b)
{
if(a<=b) return 0;
a=b; return 1;
}
int n, q, ans=0;
vpii g[maxn]; vi kq;
int par[maxn], up[maxn], h[maxn];
struct edge{int u, v, c;} e[maxn];
struct chash {
static inline uint64_t splitmix64(uint64_t x) {
x += 0x9e3779b97f4a7c15ULL;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9ULL;
x = (x ^ (x >> 27)) * 0x94d049bb133111ebULL;
return x ^ (x >> 31);
}
size_t operator()(uint64_t x) const noexcept {
static const uint64_t FIXED_RANDOM =
chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x + FIXED_RANDOM);
}
};
static inline uint64_t KEY(int u, int c) {
return ( (uint64_t)u << 32 ) ^ (uint32_t)c;
}
unordered_map<uint64_t,int,chash> cnt;
void dfs(int s)
{
vector<int> st; st.pb(s);
par[s]=0; up[s]=0; h[s]=0;
while(!st.empty())
{
int u=st.back(); st.pop_back();
for(auto v:g[u]) if(v.fi!=par[u])
{
par[v.fi]=u; up[v.fi]=v.se; h[v.fi]=h[u]+1;
st.pb(v.fi);
}
}
}
signed main()
{
rf();
int sub; cin>>sub;
cin>>n;
ff(i, 1, n-1)
{
int u ,v, c; cin>>u>>v>>c;
e[i]={u, v, c};
g[u].pb(v, i); g[v].pb(u, i);
}
dfs(1);
ff(i, 1, n-1)
{
int &u=e[i].u, &v=e[i].v;
if(h[u]>h[v]) swap(u, v);
}
cnt.reserve((n-1)*2);
ff(i, 1, n-1) ++cnt[KEY(e[i].u, e[i].c)];
{
long long A = n - 1;
for (auto &kv : cnt) A -= (kv.se - 1);
ff(v, 1, n)
{
int parid = up[v];
if(parid)
{
int pc = e[parid].c;
if (cnt.find(KEY(v, pc)) != cnt.end()) --A;
}
}
ans = (int)A;
}
kq.pb(ans);
cin>>q;
while(q--)
{
int i, nc; cin>>i>>nc;
if(nc!=e[i].c)
{
int &u=e[i].u, &v=e[i].v, &c=e[i].c;
int parid=up[u];
if (cnt.find(KEY(v, c)) != cnt.end()) ++ans;
{
auto it = cnt.find(KEY(u, c));
int cu = (it==cnt.end()?0:it->second);
if (cu>=2 || (parid && e[parid].c==c)) ++ans;
}
{
auto it = cnt.find(KEY(u, c));
if (it!=cnt.end())
{
if (--(it->second)==0) cnt.erase(it);
}
}
c=nc;
++cnt[KEY(u, nc)];
if (cnt.find(KEY(v, nc)) != cnt.end()) --ans;
{
auto it2 = cnt.find(KEY(u, nc));
int cu2 = (it2==cnt.end()?0:it2->second);
if (cu2>=2 || (parid && e[parid].c==nc)) --ans;
}
}
kq.pb(ans);
}
for(auto x:kq) cout<<x<<ss;
re;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAibyIKI2RlZmluZSBmZihpLCBhLCBiKSBmb3IoYXV0byBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgZmZyKGksIGIsIGEpIGZvcihhdXRvIGk9KGIpOyBpPj0oYSk7IC0taSkKI2RlZmluZSBubCAiXG4iCiNkZWZpbmUgc3MgIiAiCiNkZWZpbmUgcGIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzeihzKSAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgYWxsKHMpIChzKS5iZWdpbigpLCAocykuZW5kKCkKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLCB4LCBzaXplb2YgKGEpKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2cGlpOwp0eXBlZGVmIHZlY3RvcjxwbGw+IHZwbGw7CgptdDE5OTM3XzY0IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwpsbCByYW4obGwgbCwgbGwgcikKewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKGwsIHIpKHJuZyk7Cn0KCmlubGluZSB2b2lkIHJmKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKGZpbGUiLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KCmNvbnN0IGludCBtb2Q9OTk4MjQ0MzUzOwpjb25zdCBpbnQgbWF4bj0zZTUrMTU7CmNvbnN0IGxsIGluZj01ZTE2OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKFQgJngsIGNvbnN0IFQgJnkpCnsKICAgIHgrPXk7CiAgICBpZih4Pj1tb2QpIHgtPW1vZDsKICAgIGlmKHg8MCkgeCs9bW9kOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtYXhpKFQgJmEsIFQgYikKewogICAgaWYoYT49YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtaW5pKFQgJmEsIFQgYikKewogICAgaWYoYTw9YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9CgppbnQgbiwgcSwgYW5zPTA7CnZwaWkgZ1ttYXhuXTsgdmkga3E7CmludCBwYXJbbWF4bl0sIHVwW21heG5dLCBoW21heG5dOwpzdHJ1Y3QgZWRnZXtpbnQgdSwgdiwgYzt9IGVbbWF4bl07CgpzdHJ1Y3QgY2hhc2ggewogICAgc3RhdGljIGlubGluZSB1aW50NjRfdCBzcGxpdG1peDY0KHVpbnQ2NF90IHgpIHsKICAgICAgICB4ICs9IDB4OWUzNzc5Yjk3ZjRhN2MxNVVMTDsKICAgICAgICB4ID0gKHggXiAoeCA+PiAzMCkpICogMHhiZjU4NDc2ZDFjZTRlNWI5VUxMOwogICAgICAgIHggPSAoeCBeICh4ID4+IDI3KSkgKiAweDk0ZDA0OWJiMTMzMTExZWJVTEw7CiAgICAgICAgcmV0dXJuIHggXiAoeCA+PiAzMSk7CiAgICB9CiAgICBzaXplX3Qgb3BlcmF0b3IoKSh1aW50NjRfdCB4KSBjb25zdCBub2V4Y2VwdCB7CiAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IEZJWEVEX1JBTkRPTSA9CiAgICAgICAgICAgIGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKTsKICAgICAgICByZXR1cm4gc3BsaXRtaXg2NCh4ICsgRklYRURfUkFORE9NKTsKICAgIH0KfTsKc3RhdGljIGlubGluZSB1aW50NjRfdCBLRVkoaW50IHUsIGludCBjKSB7CiAgICByZXR1cm4gKCAodWludDY0X3QpdSA8PCAzMiApIF4gKHVpbnQzMl90KWM7Cn0KdW5vcmRlcmVkX21hcDx1aW50NjRfdCxpbnQsY2hhc2g+IGNudDsKCnZvaWQgZGZzKGludCBzKQp7CiAgICB2ZWN0b3I8aW50PiBzdDsgc3QucGIocyk7CiAgICBwYXJbc109MDsgdXBbc109MDsgaFtzXT0wOwogICAgd2hpbGUoIXN0LmVtcHR5KCkpCiAgICB7CiAgICAgICAgaW50IHU9c3QuYmFjaygpOyBzdC5wb3BfYmFjaygpOwogICAgICAgIGZvcihhdXRvIHY6Z1t1XSkgaWYodi5maSE9cGFyW3VdKQogICAgICAgIHsKICAgICAgICAgICAgcGFyW3YuZmldPXU7IHVwW3YuZmldPXYuc2U7IGhbdi5maV09aFt1XSsxOwogICAgICAgICAgICBzdC5wYih2LmZpKTsKICAgICAgICB9CiAgICB9Cn0KCnNpZ25lZCBtYWluKCkKewogICAgcmYoKTsKICAgIGludCBzdWI7IGNpbj4+c3ViOwogICAgY2luPj5uOwogICAgZmYoaSwgMSwgbi0xKQogICAgewogICAgICAgIGludCB1ICx2LCBjOyBjaW4+PnU+PnY+PmM7CiAgICAgICAgZVtpXT17dSwgdiwgY307CiAgICAgICAgZ1t1XS5wYih2LCBpKTsgZ1t2XS5wYih1LCBpKTsKICAgIH0KCiAgICBkZnMoMSk7CgogICAgZmYoaSwgMSwgbi0xKQogICAgewogICAgICAgIGludCAmdT1lW2ldLnUsICZ2PWVbaV0udjsKICAgICAgICBpZihoW3VdPmhbdl0pIHN3YXAodSwgdik7CiAgICB9CgogICAgY250LnJlc2VydmUoKG4tMSkqMik7CiAgICBmZihpLCAxLCBuLTEpICsrY250W0tFWShlW2ldLnUsIGVbaV0uYyldOwoKICAgIHsKICAgICAgICBsb25nIGxvbmcgQSA9IG4gLSAxOwogICAgICAgIGZvciAoYXV0byAma3YgOiBjbnQpIEEgLT0gKGt2LnNlIC0gMSk7CiAgICAgICAgZmYodiwgMSwgbikKICAgICAgICB7CiAgICAgICAgICAgIGludCBwYXJpZCA9IHVwW3ZdOwogICAgICAgICAgICBpZihwYXJpZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IHBjID0gZVtwYXJpZF0uYzsKICAgICAgICAgICAgICAgIGlmIChjbnQuZmluZChLRVkodiwgcGMpKSAhPSBjbnQuZW5kKCkpIC0tQTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBhbnMgPSAoaW50KUE7CiAgICB9CgogICAga3EucGIoYW5zKTsKCiAgICBjaW4+PnE7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgaW50IGksIG5jOyBjaW4+Pmk+Pm5jOwogICAgICAgIGlmKG5jIT1lW2ldLmMpCiAgICAgICAgewogICAgICAgICAgICBpbnQgJnU9ZVtpXS51LCAmdj1lW2ldLnYsICZjPWVbaV0uYzsKICAgICAgICAgICAgaW50IHBhcmlkPXVwW3VdOwoKICAgICAgICAgICAgaWYgKGNudC5maW5kKEtFWSh2LCBjKSkgIT0gY250LmVuZCgpKSArK2FuczsKCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBjbnQuZmluZChLRVkodSwgYykpOwogICAgICAgICAgICAgICAgaW50IGN1ID0gKGl0PT1jbnQuZW5kKCk/MDppdC0+c2Vjb25kKTsgCiAgICAgICAgICAgICAgICBpZiAoY3U+PTIgfHwgKHBhcmlkICYmIGVbcGFyaWRdLmM9PWMpKSArK2FuczsKICAgICAgICAgICAgfQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhdXRvIGl0ID0gY250LmZpbmQoS0VZKHUsIGMpKTsKICAgICAgICAgICAgICAgIGlmIChpdCE9Y250LmVuZCgpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICgtLShpdC0+c2Vjb25kKT09MCkgY250LmVyYXNlKGl0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjPW5jOwogICAgICAgICAgICArK2NudFtLRVkodSwgbmMpXTsKICAgICAgICAgICAgaWYgKGNudC5maW5kKEtFWSh2LCBuYykpICE9IGNudC5lbmQoKSkgLS1hbnM7CgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhdXRvIGl0MiA9IGNudC5maW5kKEtFWSh1LCBuYykpOwogICAgICAgICAgICAgICAgaW50IGN1MiA9IChpdDI9PWNudC5lbmQoKT8wOml0Mi0+c2Vjb25kKTsKICAgICAgICAgICAgICAgIGlmIChjdTI+PTIgfHwgKHBhcmlkICYmIGVbcGFyaWRdLmM9PW5jKSkgLS1hbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAga3EucGIoYW5zKTsKICAgIH0KCiAgICBmb3IoYXV0byB4OmtxKSBjb3V0PDx4PDxzczsKICAgIHJlOwp9Cg==