#include <bits/stdc++.h>
#define ll long long
#define all(v) v.begin(),v.end()
#define MASK(i) (1LL << (i))
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'
#define forr(i,l,r,add) for(int i = l;i <= r; i = i + add)
#define fodd(i,l,r,sub) for(int i = l;i >= r ; i = i - sub)
template <typename T1, typename T2> bool minimize(T1 &a, T2 b) {if (a > b) {a = b; return true;} return false;}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b) {if (a < b) {a = b; return true;} return false;}
using namespace std;
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
#define rand rd
long long Rand(long long l , long long h){
assert(l <= h);
return l + 1ll * rd() % (h - l + 1) * (rd() % (h - l + 1)) % (h - l + 1);
}
//////////////////////////////////////////////////////////// end of template ////////////////////////////////////////////////////////////
const int MAX = 15e4 + 5;
int n , m , q;
vector <int> edge[MAX];
int child[MAX];
int par[MAX];
int lazy[(1 << 19) + 5] , segment[(1 << 19) + 5];
int ID[MAX] , ST[MAX] , in[MAX];
int dinh[MAX];
int cnt_ID , cnt_HLD;
void dfs(int u){
child[u] = 1;
for(auto x : edge[u]){
if(x != par[u]){
par[x] = u;
dfs(x);
child[u] += child[x];
}
}
}
void build(int u , bool ok){
ID[u] = ++cnt_ID;
dinh[cnt_ID] = u;
if(ok){
in[ID[u]] = cnt_HLD;
}
else {
in[ID[u]] = ++cnt_HLD;
ST[cnt_HLD] = ID[u];
}
int mx = 0 , d = 0;
for(auto x : edge[u]) if(x != par[u] && child[x] > mx) mx = child[x] , d = x;
if(d != 0) build(d , 1);
for(auto x : edge[u]) if(x != par[u] && x != d) build(x , 0);
}
void push_down(int id , int i , int j){
maximize(segment[id] , lazy[id]);
if(i != j){
maximize(lazy[id << 1] , lazy[id]);
maximize(lazy[id << 1 | 1] , lazy[id]);
}
lazy[id] = -1;
}
void up(int id , int i , int j , int l , int r , int val){
push_down(id , i , j);
if(j < l || i > r || i > j) return;
if(l <= i && j <= r){
lazy[id] = val;
push_down(id , i , j);
return;
}
int m = i + j >> 1;
up(id << 1 , i , m , l , r , val);
up(id << 1 | 1 , m + 1 , j , l , r , val);
segment[id] = min(segment[id << 1] , segment[id << 1 | 1]);
}
void update(int x , int y , int val){
while(in[ID[x]] != in[ID[y]]){
if(in[ID[x]] > in[ID[y]]) swap(x , y);
up(1 , 2 , n , ST[in[ID[y]]] , ID[y] , val);
y = par[dinh[ST[in[ID[y]]]]];
}
up(1 , 2 , n , min(ID[x] , ID[y]) + 1 , max(ID[x] , ID[y]) , val);
}
void INP(){
cin >> n;
forr(i , 1 , n - 1 , 1){
int x , y;
cin >> x >> y;
edge[x].push_back(y);
edge[y].push_back(x);
}
dfs(1);
build(1 , 0);
memset(lazy , -1 , sizeof(lazy));
memset(segment , -1 , sizeof(segment));
cin >> m;
while(m--){
int x , y , val;
cin >> x >> y >> val;
update(x , y , val);
}
cout << segment[1] << endl;
cin >> q;
while(q--){
int x , y , val;
cin >> x >> y >> val;
update(x , y , val);
cout << segment[1] << endl;
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#define TASK ""
//freopen(TASK".inp" , "r" , stdin);
//freopen(TASK".out" , "w" , stdout);
INP();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgTUFTSyhpKSAoMUxMIDw8IChpKSkKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBmb3JyKGksbCxyLGFkZCkgZm9yKGludCBpID0gbDtpIDw9IHI7IGkgPSBpICsgYWRkKQojZGVmaW5lIGZvZGQoaSxsLHIsc3ViKSBmb3IoaW50IGkgPSBsO2kgPj0gciA7IGkgPSBpIC0gc3ViKQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBib29sIG1pbmltaXplKFQxICZhLCBUMiBiKSB7aWYgKGEgPiBiKSB7YSA9IGI7IHJldHVybiB0cnVlO30gcmV0dXJuIGZhbHNlO30KdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gYm9vbCBtYXhpbWl6ZShUMSAmYSwgVDIgYikge2lmIChhIDwgYikge2EgPSBiOyByZXR1cm4gdHJ1ZTt9IHJldHVybiBmYWxzZTt9Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbXQxOTkzNyByZChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwojZGVmaW5lIHJhbmQgcmQKCmxvbmcgbG9uZyBSYW5kKGxvbmcgbG9uZyBsICwgbG9uZyBsb25nIGgpewoJYXNzZXJ0KGwgPD0gaCk7CglyZXR1cm4gbCArIDFsbCAqIHJkKCkgJSAoaCAtIGwgKyAxKSAqIChyZCgpICUgKGggLSBsICsgMSkpICUgKGggLSBsICsgMSk7Cn0KCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gZW5kIG9mIHRlbXBsYXRlIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKY29uc3QgaW50IE1BWCA9IDE1ZTQgKyA1OwppbnQgbiAsIG0gLCBxOwp2ZWN0b3IgPGludD4gZWRnZVtNQVhdOwppbnQgY2hpbGRbTUFYXTsKaW50IHBhcltNQVhdOwppbnQgbGF6eVsoMSA8PCAxOSkgKyA1XSAsIHNlZ21lbnRbKDEgPDwgMTkpICsgNV07CmludCBJRFtNQVhdICwgU1RbTUFYXSAsIGluW01BWF07CmludCBkaW5oW01BWF07CmludCBjbnRfSUQgLCBjbnRfSExEOwoKdm9pZCBkZnMoaW50IHUpewogICAgY2hpbGRbdV0gPSAxOwogICAgZm9yKGF1dG8geCA6IGVkZ2VbdV0pewogICAgICAgIGlmKHggIT0gcGFyW3VdKXsKICAgICAgICAgICAgcGFyW3hdID0gdTsKICAgICAgICAgICAgZGZzKHgpOwogICAgICAgICAgICBjaGlsZFt1XSArPSBjaGlsZFt4XTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgYnVpbGQoaW50IHUgLCBib29sIG9rKXsKICAgIElEW3VdID0gKytjbnRfSUQ7CiAgICBkaW5oW2NudF9JRF0gPSB1OwogICAgaWYob2spewogICAgICAgIGluW0lEW3VdXSA9IGNudF9ITEQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpbltJRFt1XV0gPSArK2NudF9ITEQ7CiAgICAgICAgU1RbY250X0hMRF0gPSBJRFt1XTsKICAgIH0KICAgIGludCBteCA9IDAgLCBkID0gMDsKICAgIGZvcihhdXRvIHggOiBlZGdlW3VdKSBpZih4ICE9IHBhclt1XSAmJiBjaGlsZFt4XSA+IG14KSBteCA9IGNoaWxkW3hdICwgZCA9IHg7CiAgICBpZihkICE9IDApIGJ1aWxkKGQgLCAxKTsKICAgIGZvcihhdXRvIHggOiBlZGdlW3VdKSBpZih4ICE9IHBhclt1XSAmJiB4ICE9IGQpIGJ1aWxkKHggLCAwKTsKfQoKdm9pZCBwdXNoX2Rvd24oaW50IGlkICwgaW50IGkgLCBpbnQgail7CiAgICBtYXhpbWl6ZShzZWdtZW50W2lkXSAsIGxhenlbaWRdKTsKICAgIGlmKGkgIT0gail7CiAgICAgICAgbWF4aW1pemUobGF6eVtpZCA8PCAxXSAsIGxhenlbaWRdKTsKICAgICAgICBtYXhpbWl6ZShsYXp5W2lkIDw8IDEgfCAxXSAsIGxhenlbaWRdKTsKICAgIH0KICAgIGxhenlbaWRdID0gLTE7Cn0Kdm9pZCB1cChpbnQgaWQgLCBpbnQgaSAsIGludCBqICwgaW50IGwgLCBpbnQgciAsIGludCB2YWwpewogICAgcHVzaF9kb3duKGlkICwgaSAsIGopOwogICAgaWYoaiA8IGwgfHwgaSA+IHIgfHwgaSA+IGopIHJldHVybjsKICAgIGlmKGwgPD0gaSAmJiBqIDw9IHIpewogICAgICAgIGxhenlbaWRdID0gdmFsOwogICAgICAgIHB1c2hfZG93bihpZCAsIGkgLCBqKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbSA9IGkgKyBqID4+IDE7CiAgICB1cChpZCA8PCAxICwgaSAsIG0gLCBsICwgciAsIHZhbCk7CiAgICB1cChpZCA8PCAxIHwgMSAsIG0gKyAxICwgaiAsIGwgLCByICwgdmFsKTsKICAgIHNlZ21lbnRbaWRdID0gbWluKHNlZ21lbnRbaWQgPDwgMV0gLCBzZWdtZW50W2lkIDw8IDEgfCAxXSk7Cn0KCnZvaWQgdXBkYXRlKGludCB4ICwgaW50IHkgLCBpbnQgdmFsKXsKICAgIHdoaWxlKGluW0lEW3hdXSAhPSBpbltJRFt5XV0pewogICAgICAgIGlmKGluW0lEW3hdXSA+IGluW0lEW3ldXSkgc3dhcCh4ICwgeSk7CiAgICAgICAgdXAoMSAsIDIgLCBuICwgU1RbaW5bSURbeV1dXSAsIElEW3ldICwgdmFsKTsKICAgICAgICB5ID0gcGFyW2RpbmhbU1RbaW5bSURbeV1dXV1dOwogICAgfQogICAgdXAoMSAsIDIgLCBuICwgbWluKElEW3hdICwgSURbeV0pICsgMSAsIG1heChJRFt4XSAsIElEW3ldKSAsIHZhbCk7Cn0KCnZvaWQgSU5QKCl7CiAgICBjaW4gPj4gbjsKICAgIGZvcnIoaSAsIDEgLCBuIC0gMSAsIDEpewogICAgICAgIGludCB4ICwgeTsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIGVkZ2VbeF0ucHVzaF9iYWNrKHkpOwogICAgICAgIGVkZ2VbeV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgZGZzKDEpOwogICAgYnVpbGQoMSAsIDApOwogICAgbWVtc2V0KGxhenkgLCAtMSAsIHNpemVvZihsYXp5KSk7CiAgICBtZW1zZXQoc2VnbWVudCAsIC0xICwgc2l6ZW9mKHNlZ21lbnQpKTsKICAgIGNpbiA+PiBtOwogICAgd2hpbGUobS0tKXsKICAgICAgICBpbnQgeCAsIHkgLCB2YWw7CiAgICAgICAgY2luID4+IHggPj4geSA+PiB2YWw7CiAgICAgICAgdXBkYXRlKHggLCB5ICwgdmFsKTsKICAgIH0KICAgIGNvdXQgPDwgc2VnbWVudFsxXSA8PCBlbmRsOwogICAgY2luID4+IHE7CiAgICB3aGlsZShxLS0pewogICAgICAgIGludCB4ICwgeSAsIHZhbDsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IHZhbDsKICAgICAgICB1cGRhdGUoeCAsIHkgLCB2YWwpOwogICAgICAgIGNvdXQgPDwgc2VnbWVudFsxXSA8PCBlbmRsOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgI2RlZmluZSBUQVNLICIiCiAgICAvL2ZyZW9wZW4oVEFTSyIuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIC8vZnJlb3BlbihUQVNLIi5vdXQiICwgInciICwgc3Rkb3V0KTsKICAgIElOUCgpOwogICAgcmV0dXJuIDA7Cn0K