#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define up upper_bound
#define vll vector<ll>
#define G vector<vll >
#define F first
#define S second
#define pll pair<ll,ll>
#define FOR1(i,a) for(i=0;i<=a;i++)
#define FOR2(i,a,b) for(i=a;i<=b;i++)
#define endl '\n'
#define clr(a) memset(a,0,sizeof(a))
#define all(x) x.begin(),x.end()
#define rll read_ll();
#ifndef ONLINE_JUDGE
#define gc getchar
#define pc putchar
#else
#define gc getchar_unlocked
#define pc putchar_unlocked
#endif
typedef long long ll;
ll read_ll(){char c=gc();while((c<'0'||c>'9')&&c!='-')c=gc();ll ret=0;int neg=0;if(c=='-')neg=1,c=gc();while(c>='0'&&c<='9'){ret=10*ret+c-48;c=gc();}return neg?-ret:ret;}
const ll N=10005;
const ll LN=15;
struct edge
{
ll c,val;
};
vector<vector<edge> > g(N);
ll lvl[N],p[N][LN],secret[N];
bool visited[N];
inline ll mpi(ll u,ll v)
{
return u*10+v;
}
void dfs(ll u)
{
int i;
FOR2(i,1,LN-1)
p[u][i]=p[p[u][i-1]][i-1];
for(auto&v:g[u])
{
if(!visited[v.val])
{
secret[v.val]=v.c;
visited[v.val]=true;
p[v.val][0]=u;
lvl[v.val]=lvl[u]+1;
dfs(v.val);
}
}
}
inline ll lca(ll u,ll v)
{
if(lvl[v]>lvl[u]) swap(u,v);
for(int i=LN-1;i>=0;i--)
if(lvl[u]-(1<<i)>=lvl[v])
u=p[u][i];
if(u==v) return u;
for(int i=LN-1;i>=0;i--)
if(p[u][i]!=p[v][i])
u=p[u][i],v=p[v][i];
return p[u][0];
}
void solve()
{
ll u,v,c,n,m,i; n = rll m=n-1;
clr(visited);clr(lvl);
pll edgeIndex[n+1];
edge e;
FOR1(i,m-1)
g[i].clear();
FOR1(i,m-1)
{
u=rll v=rll c=rll
e.val=v; e.c=c;
g[u].pb(e);e.val=u;
g[v].pb(e);
edgeIndex[i+1]=mp(u,v);
}
dfs(1);
string s;
while(1)
{
cin>>s;
if(s=="CHANGE")
{
u=rll v=rll
pll pa=edgeIndex[u];
if(p[pa.S][0]==pa.F)
secret[pa.S]=v;
else
secret[pa.F]=v;
}
if(s=="QUERY")
{
ll center;
u=rll v=rll
center=lca(u,v);
ll maxsecret=secret[u],maxsecret2=secret[v];
if(center!=u)
for(i=LN-1;i>=0;i--)
{
if(lvl[u]-(1<<i)>lvl[center])
if(secret[p[u][i]]>=maxsecret)
u=p[u][i],maxsecret=secret[u];
}
if(center!=v)
for(i=LN-1;i>=0;i--)
{
if(lvl[v]-(1<<i)>lvl[center])
if(secret[p[v][i]]>=maxsecret2)
v=p[v][i],maxsecret2=secret[v];
}
cout<<max(maxsecret,maxsecret2)<<endl;
}
if(s=="DONE")
break;
}
}
int main()
{
ll t;
t=rll
while(t--)
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSB1cCB1cHBlcl9ib3VuZAojZGVmaW5lIHZsbCB2ZWN0b3I8bGw+CiNkZWZpbmUgRyB2ZWN0b3I8dmxsID4KI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KI2RlZmluZSBGT1IxKGksYSkgZm9yKGk9MDtpPD1hO2krKykKI2RlZmluZSBGT1IyKGksYSxiKSBmb3IoaT1hO2k8PWI7aSsrKQojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIGNscihhKSBtZW1zZXQoYSwwLHNpemVvZihhKSkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBybGwgcmVhZF9sbCgpOwojaWZuZGVmIE9OTElORV9KVURHRQojZGVmaW5lIGdjIGdldGNoYXIKI2RlZmluZSBwYyBwdXRjaGFyCiNlbHNlCiNkZWZpbmUgZ2MgZ2V0Y2hhcl91bmxvY2tlZAojZGVmaW5lIHBjIHB1dGNoYXJfdW5sb2NrZWQKI2VuZGlmCnR5cGVkZWYgbG9uZyBsb25nIGxsOwpsbCByZWFkX2xsKCl7Y2hhciBjPWdjKCk7d2hpbGUoKGM8JzAnfHxjPic5JykmJmMhPSctJyljPWdjKCk7bGwgcmV0PTA7aW50IG5lZz0wO2lmKGM9PSctJyluZWc9MSxjPWdjKCk7d2hpbGUoYz49JzAnJiZjPD0nOScpe3JldD0xMCpyZXQrYy00ODtjPWdjKCk7fXJldHVybiBuZWc/LXJldDpyZXQ7fQpjb25zdCBsbCBOPTEwMDA1Owpjb25zdCBsbCBMTj0xNTsKCnN0cnVjdCBlZGdlCnsKCWxsIGMsdmFsOwp9Owp2ZWN0b3I8dmVjdG9yPGVkZ2U+ID4gZyhOKTsKbGwgbHZsW05dLHBbTl1bTE5dLHNlY3JldFtOXTsKYm9vbCB2aXNpdGVkW05dOwoKaW5saW5lIGxsIG1waShsbCB1LGxsIHYpCnsKCXJldHVybiB1KjEwK3Y7Cn0KCnZvaWQgZGZzKGxsIHUpCnsKCWludCBpOwoJRk9SMihpLDEsTE4tMSkKCXBbdV1baV09cFtwW3VdW2ktMV1dW2ktMV07Cglmb3IoYXV0byZ2OmdbdV0pCgl7CgkJaWYoIXZpc2l0ZWRbdi52YWxdKQoJCXsKCQkJc2VjcmV0W3YudmFsXT12LmM7CgkJCXZpc2l0ZWRbdi52YWxdPXRydWU7CgkJCXBbdi52YWxdWzBdPXU7CgkJCWx2bFt2LnZhbF09bHZsW3VdKzE7CgkJCWRmcyh2LnZhbCk7CgkJfQoJfQp9CgppbmxpbmUgbGwgbGNhKGxsIHUsbGwgdikKewoJaWYobHZsW3ZdPmx2bFt1XSkgc3dhcCh1LHYpOwoKCWZvcihpbnQgaT1MTi0xO2k+PTA7aS0tKQoJCWlmKGx2bFt1XS0oMTw8aSk+PWx2bFt2XSkKCQkJdT1wW3VdW2ldOwoJaWYodT09dikgcmV0dXJuIHU7Cglmb3IoaW50IGk9TE4tMTtpPj0wO2ktLSkKCWlmKHBbdV1baV0hPXBbdl1baV0pCgkJdT1wW3VdW2ldLHY9cFt2XVtpXTsKCXJldHVybiBwW3VdWzBdOwp9Cgp2b2lkIHNvbHZlKCkKewoJbGwgdSx2LGMsbixtLGk7IG4gPSBybGwgbT1uLTE7CgljbHIodmlzaXRlZCk7Y2xyKGx2bCk7CglwbGwgZWRnZUluZGV4W24rMV07CgoJZWRnZSBlOwoJRk9SMShpLG0tMSkKCWdbaV0uY2xlYXIoKTsKCUZPUjEoaSxtLTEpCgl7CgkJdT1ybGwgdj1ybGwgYz1ybGwKCQllLnZhbD12OyBlLmM9YzsKCQlnW3VdLnBiKGUpO2UudmFsPXU7CgkJZ1t2XS5wYihlKTsKCQllZGdlSW5kZXhbaSsxXT1tcCh1LHYpOwoJfQoJZGZzKDEpOwoJc3RyaW5nIHM7Cgl3aGlsZSgxKQoJewoJCWNpbj4+czsKCQlpZihzPT0iQ0hBTkdFIikKCQl7CgkJCXU9cmxsIHY9cmxsCgkJCXBsbCBwYT1lZGdlSW5kZXhbdV07CgkJCWlmKHBbcGEuU11bMF09PXBhLkYpCgkJCQlzZWNyZXRbcGEuU109djsKCQkJZWxzZQoJCQkJc2VjcmV0W3BhLkZdPXY7CgkJfQoJCWlmKHM9PSJRVUVSWSIpCgkJewoJCQlsbCBjZW50ZXI7CgkJCXU9cmxsIHY9cmxsCgkJCWNlbnRlcj1sY2EodSx2KTsKCQkJCgkJCWxsIG1heHNlY3JldD1zZWNyZXRbdV0sbWF4c2VjcmV0Mj1zZWNyZXRbdl07CgkJCWlmKGNlbnRlciE9dSkKCQkJZm9yKGk9TE4tMTtpPj0wO2ktLSkKCQkJewoJCQkJaWYobHZsW3VdLSgxPDxpKT5sdmxbY2VudGVyXSkKCQkJCQlpZihzZWNyZXRbcFt1XVtpXV0+PW1heHNlY3JldCkKCQkJCQkJdT1wW3VdW2ldLG1heHNlY3JldD1zZWNyZXRbdV07CgkJCX0KCQkJaWYoY2VudGVyIT12KQoJCQlmb3IoaT1MTi0xO2k+PTA7aS0tKQoJCQl7CgkJCQlpZihsdmxbdl0tKDE8PGkpPmx2bFtjZW50ZXJdKQoJCQkJCWlmKHNlY3JldFtwW3ZdW2ldXT49bWF4c2VjcmV0MikKCQkJCQkJdj1wW3ZdW2ldLG1heHNlY3JldDI9c2VjcmV0W3ZdOwoJCQl9CgkJCWNvdXQ8PG1heChtYXhzZWNyZXQsbWF4c2VjcmV0Mik8PGVuZGw7CgkJfQoJCWlmKHM9PSJET05FIikKCQkJYnJlYWs7Cgl9Cn0KCgppbnQgbWFpbigpCnsKCWxsIHQ7Cgl0PXJsbAoJd2hpbGUodC0tKQoJCXNvbHZlKCk7CglyZXR1cm4gMDsKfQ==