//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "tree-edge-color-queries"
#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 push_back
#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;
vpii g[maxn]; vi kq;
int par[maxn], up[maxn], h[maxn];
struct edge{int u, v, c;} e[maxn], ne[maxn];
struct myhash
{
static 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
{
static const uint64_t FIXED=chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x+FIXED);
}
};
unordered_map<ll, int, myhash> mp;
void dfs(int u)
{
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;
dfs(v.fi);
}
}
inline ll get(int u, int c)
{
return 1ll*u*(n+1)+c;
}
signed main()
{
rf();
int sub; cin>>sub;
cin>>n;
mp.reserve(maxn*2); mp.max_load_factor(0.7f);
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);
ne[i]=e[i]; ne[i].c=n+1;
}
ff(i, 1, n) for(auto x:g[i]) if(x.fi!=par[i]) ++mp[get(i, n+1)];
int ans=1;
ff(i ,1, n-1)
{
int &u=ne[i].u, &v=ne[i].v, &c=ne[i].c;
int nc=e[i].c;
int parid=up[u];
bool ok1=(mp.find(get(v, c))!=mp.end());
bool ok2=((mp.find(get(u, c))!=mp.end() && mp[get(u, c)]>=2) || ne[parid].c==c);
if(ok1) ++ans;
if(ok2) ++ans;
if(--mp[get(u, c)]==0) mp.erase(get(u, c));
c=nc;
++mp[get(u, c)];
ok1=(mp.find(get(v, c))!=mp.end());
ok2=((mp.find(get(u, c))!=mp.end() && mp[get(u, c)]>=2) || ne[parid].c==c);
if(ok1) --ans;
if(ok2) --ans;
}
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];
bool ok1=(mp.find(get(v, c))!=mp.end());
bool ok2=((mp.find(get(u, c))!=mp.end() && mp[get(u, c)]>=2) || e[parid].c==c);
if(ok1) ++ans;
if(ok2) ++ans;
if(--mp[get(u, c)]==0) mp.erase(get(u, c));
c=nc;
++mp[get(u, c)];
ok1=(mp.find(get(v, c))!=mp.end());
ok2=((mp.find(get(u, c))!=mp.end() && mp[get(u, c)]>=2) || e[parid].c==c);
if(ok1) --ans;
if(ok2) --ans;
}
kq.pb(ans);
}
for(auto x:kq) cout<<x<<ss;
re;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAidHJlZS1lZGdlLWNvbG9yLXF1ZXJpZXMiCiNkZWZpbmUgZmYoaSwgYSwgYikgZm9yKGF1dG8gaT0oYSk7IGk8PShiKTsgKytpKQojZGVmaW5lIGZmcihpLCBiLCBhKSBmb3IoYXV0byBpPShiKTsgaT49KGEpOyAtLWkpCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHNzICIgIgovLyNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzeihzKSAoaW50KXMuc2l6ZSgpCiNkZWZpbmUgYWxsKHMpIChzKS5iZWdpbigpLCAocykuZW5kKCkKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLCB4LCBzaXplb2YgKGEpKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8cGlpPiB2cGlpOwp0eXBlZGVmIHZlY3RvcjxwbGw+IHZwbGw7CgptdDE5OTM3XzY0IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwpsbCByYW4obGwgbCwgbGwgcikKewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKGwsIHIpKHJuZyk7Cn0KCmlubGluZSB2b2lkIHJmKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKGZpbGUiLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KCmNvbnN0IGludCBtb2Q9OTk4MjQ0MzUzOwpjb25zdCBpbnQgbWF4bj0zZTUrMTU7CmNvbnN0IGxsIGluZj01ZTE2OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYWRkKFQgJngsIGNvbnN0IFQgJnkpCnsKICAgIHgrPXk7CiAgICBpZih4Pj1tb2QpIHgtPW1vZDsKICAgIGlmKHg8MCkgeCs9bW9kOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtYXhpKFQgJmEsIFQgYikKewogICAgaWYoYT49YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBtaW5pKFQgJmEsIFQgYikKewogICAgaWYoYTw9YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9CgppbnQgbiwgcTsKdnBpaSBnW21heG5dOyB2aSBrcTsKaW50IHBhclttYXhuXSwgdXBbbWF4bl0sIGhbbWF4bl07CnN0cnVjdCBlZGdle2ludCB1LCB2LCBjO30gZVttYXhuXSwgbmVbbWF4bl07CnN0cnVjdCBteWhhc2gKewogICAgc3RhdGljIHVpbnQ2NF90IHNwbGl0bWl4NjQodWludDY0X3QgeCkKICAgIHsKICAgICAgICB4Kz0weDllMzc3OWI5N2Y0YTdjMTVVTEw7CiAgICAgICAgeD0oeF4oeD4+MzApKSoweGJmNTg0NzZkMWNlNGU1YjlVTEw7CiAgICAgICAgeD0oeF4oeD4+MjcpKSoweDk0ZDA0OWJiMTMzMTExZWJVTEw7CiAgICAgICAgcmV0dXJuIHheKHg+PjMxKTsKICAgIH0KICAgIHNpemVfdCBvcGVyYXRvcigpKHVpbnQ2NF90IHgpIGNvbnN0CiAgICB7CiAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IEZJWEVEPWNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKTsKICAgICAgICByZXR1cm4gc3BsaXRtaXg2NCh4K0ZJWEVEKTsKICAgIH0KfTsKdW5vcmRlcmVkX21hcDxsbCwgaW50LCBteWhhc2g+IG1wOwoKdm9pZCBkZnMoaW50IHUpCnsKICAgIGZvcihhdXRvIHY6Z1t1XSkgaWYodi5maSE9cGFyW3VdKQogICAgewogICAgICAgIHBhclt2LmZpXT11OyB1cFt2LmZpXT12LnNlOyBoW3YuZmldPWhbdV0rMTsKICAgICAgICBkZnModi5maSk7CiAgICB9Cn0KCmlubGluZSBsbCBnZXQoaW50IHUsIGludCBjKQp7CiAgICByZXR1cm4gMWxsKnUqKG4rMSkrYzsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICByZigpOwogICAgaW50IHN1YjsgY2luPj5zdWI7CiAgICBjaW4+Pm47CiAgICBtcC5yZXNlcnZlKG1heG4qMik7IG1wLm1heF9sb2FkX2ZhY3RvcigwLjdmKTsKICAgIGZmKGksIDEsIG4tMSkKICAgIHsKICAgICAgICBpbnQgdSAsdiwgYzsgY2luPj51Pj52Pj5jOwogICAgICAgIGVbaV09e3UsIHYsIGN9OwogICAgICAgIGdbdV0ucGIodiwgaSk7IGdbdl0ucGIodSwgaSk7CiAgICB9CiAgICBkZnMoMSk7CiAgICBmZihpLCAxLCBuLTEpCiAgICB7CiAgICAgICAgaW50ICZ1PWVbaV0udSwgJnY9ZVtpXS52OwogICAgICAgIGlmKGhbdV0+aFt2XSkgc3dhcCh1LCB2KTsKICAgICAgICBuZVtpXT1lW2ldOyBuZVtpXS5jPW4rMTsKICAgIH0KICAgIGZmKGksIDEsIG4pIGZvcihhdXRvIHg6Z1tpXSkgaWYoeC5maSE9cGFyW2ldKSArK21wW2dldChpLCBuKzEpXTsKCiAgICBpbnQgYW5zPTE7CiAgICBmZihpICwxLCBuLTEpCiAgICB7CiAgICAgICAgaW50ICZ1PW5lW2ldLnUsICZ2PW5lW2ldLnYsICZjPW5lW2ldLmM7CiAgICAgICAgaW50IG5jPWVbaV0uYzsKICAgICAgICBpbnQgcGFyaWQ9dXBbdV07CiAgICAgICAgYm9vbCBvazE9KG1wLmZpbmQoZ2V0KHYsIGMpKSE9bXAuZW5kKCkpOwogICAgICAgIGJvb2wgb2syPSgobXAuZmluZChnZXQodSwgYykpIT1tcC5lbmQoKSAmJiBtcFtnZXQodSwgYyldPj0yKSB8fCBuZVtwYXJpZF0uYz09Yyk7CiAgICAgICAgaWYob2sxKSArK2FuczsKICAgICAgICBpZihvazIpICsrYW5zOwoKICAgICAgICBpZigtLW1wW2dldCh1LCBjKV09PTApIG1wLmVyYXNlKGdldCh1LCBjKSk7CiAgICAgICAgYz1uYzsKICAgICAgICArK21wW2dldCh1LCBjKV07CgogICAgICAgIG9rMT0obXAuZmluZChnZXQodiwgYykpIT1tcC5lbmQoKSk7CiAgICAgICAgb2syPSgobXAuZmluZChnZXQodSwgYykpIT1tcC5lbmQoKSAmJiBtcFtnZXQodSwgYyldPj0yKSB8fCBuZVtwYXJpZF0uYz09Yyk7CiAgICAgICAgaWYob2sxKSAtLWFuczsKICAgICAgICBpZihvazIpIC0tYW5zOwogICAgfQogICAga3EucGIoYW5zKTsKCiAgICBjaW4+PnE7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgaW50IGksIG5jOyBjaW4+Pmk+Pm5jOwogICAgICAgIGlmKG5jIT1lW2ldLmMpCiAgICAgICAgewogICAgICAgICAgICBpbnQgJnU9ZVtpXS51LCAmdj1lW2ldLnYsICZjPWVbaV0uYzsKICAgICAgICAgICAgaW50IHBhcmlkPXVwW3VdOwogICAgICAgICAgICBib29sIG9rMT0obXAuZmluZChnZXQodiwgYykpIT1tcC5lbmQoKSk7CiAgICAgICAgICAgIGJvb2wgb2syPSgobXAuZmluZChnZXQodSwgYykpIT1tcC5lbmQoKSAmJiBtcFtnZXQodSwgYyldPj0yKSB8fCBlW3BhcmlkXS5jPT1jKTsKICAgICAgICAgICAgaWYob2sxKSArK2FuczsKICAgICAgICAgICAgaWYob2syKSArK2FuczsKCiAgICAgICAgICAgIGlmKC0tbXBbZ2V0KHUsIGMpXT09MCkgbXAuZXJhc2UoZ2V0KHUsIGMpKTsKICAgICAgICAgICAgYz1uYzsKICAgICAgICAgICAgKyttcFtnZXQodSwgYyldOwoKICAgICAgICAgICAgb2sxPShtcC5maW5kKGdldCh2LCBjKSkhPW1wLmVuZCgpKTsKICAgICAgICAgICAgb2syPSgobXAuZmluZChnZXQodSwgYykpIT1tcC5lbmQoKSAmJiBtcFtnZXQodSwgYyldPj0yKSB8fCBlW3BhcmlkXS5jPT1jKTsKICAgICAgICAgICAgaWYob2sxKSAtLWFuczsKICAgICAgICAgICAgaWYob2syKSAtLWFuczsKICAgICAgICB9CiAgICAgICAga3EucGIoYW5zKTsKICAgIH0KICAgIGZvcihhdXRvIHg6a3EpIGNvdXQ8PHg8PHNzOwogICAgcmU7Cn0K