#include<bits/stdc++.h>
using namespace std;
int pos;
vector<pair<int,int>> adj[10001];
vector<int> edges[10001];
int level[10001],parent[10001],subtree[10001],dp[10001][14],location[10001],head[10001],arr[10001],segTree[350000];
void dfs(int,int,int);
void hld(int,int,int);
void update(int,int,int,int,int);
void build(int,int,int);
int lca(int,int,int);
int query_up(int,int,int);
int query(int,int,int,int,int);
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string str;
int tc,i,j,n,a,b,weight;
cin>>tc;
while(tc--){
cin>>n;
pos=0;
for(i=1;i<=n-1;i++){
cin>>a>>b>>weight;
adj[a].push_back({b,weight});
adj[b].push_back({a,weight});
edges[i].push_back(a);
edges[i].push_back(b);
}
//cout<<adj[1].size();
int log=ceil(log2(n));
level[1]=0;
dfs(1,1,log);
head[1]=-1;
hld(1,0,0);
build(0,n-1,0);
int a1,b1;
while(true){
cin>>str;
if(str[0]=='D')
break;
cin>>a1>>b1;
if(str[0]=='C'){
if(level[edges[a1][0]]>level[edges[a1][1]])
update(location[edges[a1][0]],0,n-1,0,b1);
else
update(location[edges[a1][1]],0,n-1,0,b1);
}
if(str[0]=='Q'){
int l=lca(a1,b1,log);
cout<<max(query_up(a1,l,n),query_up(b1,l,n))<<endl;
}
}
for(i=1;i<=n;i++){
adj[i].clear();
edges[i].clear();
}
}
return 0;
}
void dfs(int u,int father,int log)
{
parent[u]=father;
dp[u][0]=father;
for(int i=1;i<=log;i++)
dp[u][i]=dp[dp[u][i-1]][i-1];
int flag=0,temp;
for(int i=0;i<adj[u].size();i++){
temp=adj[u][i].first;
if(temp!=father){
level[temp]=level[u]+1;
dfs(temp,u,log);
subtree[u]+=subtree[temp]+1;
flag=1;
}
}
if(flag==0)
subtree[u]=1;
}
void hld(int u,int p,int value)
{
if(head[u]==-1)
head[u]=u;
else
head[u]=head[p];
location[u]=pos;
arr[pos++]=value;
int sum=-1;
int maxsubtree=0,special=-1;
for(int i=0;i<adj[u].size();i++){
if(adj[u][i].first!=p){
if(subtree[adj[u][i].first]>maxsubtree){
maxsubtree=subtree[adj[u][i].first];
sum=adj[u][i].second;
special=adj[u][i].first;
}
}
}
if(special!=-1){
hld(special,u,sum);
for(int i=0;i<adj[u].size();i++){
if(adj[u][i].first!=special && adj[u][i].first!=p){
head[adj[u][i].first]=-1;
hld(adj[u][i].first,u,adj[u][i].second);
}
}
}
}
void update(int u,int low,int high,int pos,int tochange)
{
if(u<low || u>high)
return;
if(low==high){
segTree[pos]=tochange;
return;
}
int mid=(low+high)/2;
update(u,low,mid,2*pos+1,tochange);
update(u,mid+1,high,2*pos+2,tochange);
segTree[pos]=(segTree[2*pos+1]>segTree[2*pos+2])?segTree[2*pos+1]:segTree[2*pos+2];
}
void build(int low,int high,int pos)
{
if(low==high){
segTree[pos]=arr[low];
return;
}
int mid=(low+high)/2;
build(low,mid,2*pos+1);
build(mid+1,high,2*pos+2);
segTree[pos]=(segTree[2*pos+1]>segTree[2*pos+2])?segTree[2*pos+1]:segTree[2*pos+2];
}
int lca(int a,int b,int log)
{
if(level[a]<level[b])
swap(a,b);
for(int i=log;i>=0;i--){
if(level[a]-(int)(pow(2,i)+0.5)>=level[b])
a=dp[a][i];
}
if(a==b)
return a;
for(int i=log;i>=0;i--){
if(dp[a][i]!=dp[b][i]){
a=dp[a][i];
b=dp[b][i];
}
}
return dp[a][0];
}
int query_up(int a,int l,int n)
{
int maximum=0;
while(true){
if(a==l)
return maximum;
if(head[a]==head[l])
return maximum=max(maximum,query(location[head[a]],location[a],0,n-1,0));
else if(head[a]!=head[l]){
maximum=max(maximum,query(location[head[a]],location[a],0,n-1,0));
a=parent[head[a]];
}
}
}
int query(int qlow,int qhigh,int low,int high,int pos)
{
if(qhigh<low || qlow>high)
return -1;
if(low>=qlow && high<=qhigh)
return segTree[pos];
int mid=(low+high)/2;
return max(query(qlow,qhigh,low,mid,2*pos+1),query(qlow,qhigh,mid+1,high,2*pos+2));
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHBvczsKdmVjdG9yPHBhaXI8aW50LGludD4+IGFkalsxMDAwMV07CnZlY3RvcjxpbnQ+IGVkZ2VzWzEwMDAxXTsKaW50IGxldmVsWzEwMDAxXSxwYXJlbnRbMTAwMDFdLHN1YnRyZWVbMTAwMDFdLGRwWzEwMDAxXVsxNF0sbG9jYXRpb25bMTAwMDFdLGhlYWRbMTAwMDFdLGFyclsxMDAwMV0sc2VnVHJlZVszNTAwMDBdOwp2b2lkIGRmcyhpbnQsaW50LGludCk7CnZvaWQgaGxkKGludCxpbnQsaW50KTsKdm9pZCB1cGRhdGUoaW50LGludCxpbnQsaW50LGludCk7CnZvaWQgYnVpbGQoaW50LGludCxpbnQpOwppbnQgbGNhKGludCxpbnQsaW50KTsKaW50IHF1ZXJ5X3VwKGludCxpbnQsaW50KTsKaW50IHF1ZXJ5KGludCxpbnQsaW50LGludCxpbnQpOwppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIHN0cmluZyBzdHI7CiAgICBpbnQgdGMsaSxqLG4sYSxiLHdlaWdodDsKICAgIGNpbj4+dGM7CiAgICB3aGlsZSh0Yy0tKXsKICAgICAgICBjaW4+Pm47CiAgICAgICAgcG9zPTA7CiAgICAgICAgZm9yKGk9MTtpPD1uLTE7aSsrKXsKICAgICAgICAgICAgY2luPj5hPj5iPj53ZWlnaHQ7CiAgICAgICAgICAgIGFkalthXS5wdXNoX2JhY2soe2Isd2VpZ2h0fSk7CiAgICAgICAgICAgIGFkaltiXS5wdXNoX2JhY2soe2Esd2VpZ2h0fSk7CiAgICAgICAgICAgIGVkZ2VzW2ldLnB1c2hfYmFjayhhKTsKICAgICAgICAgICAgZWRnZXNbaV0ucHVzaF9iYWNrKGIpOwogICAgICAgIH0KCiAgICAgICAgLy9jb3V0PDxhZGpbMV0uc2l6ZSgpOwogICAgICAgIGludCBsb2c9Y2VpbChsb2cyKG4pKTsKICAgICAgICBsZXZlbFsxXT0wOwogICAgICAgIGRmcygxLDEsbG9nKTsKICAgICAgICBoZWFkWzFdPS0xOwogICAgICAgIGhsZCgxLDAsMCk7CiAgICAgICAgYnVpbGQoMCxuLTEsMCk7CiAgICAgICAgaW50IGExLGIxOwogICAgICAgIHdoaWxlKHRydWUpewogICAgICAgICAgICBjaW4+PnN0cjsKICAgICAgICAgICAgaWYoc3RyWzBdPT0nRCcpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2luPj5hMT4+YjE7CiAgICAgICAgICAgIGlmKHN0clswXT09J0MnKXsKICAgICAgICAgICAgICAgIGlmKGxldmVsW2VkZ2VzW2ExXVswXV0+bGV2ZWxbZWRnZXNbYTFdWzFdXSkKICAgICAgICAgICAgICAgICAgICB1cGRhdGUobG9jYXRpb25bZWRnZXNbYTFdWzBdXSwwLG4tMSwwLGIxKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB1cGRhdGUobG9jYXRpb25bZWRnZXNbYTFdWzFdXSwwLG4tMSwwLGIxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihzdHJbMF09PSdRJyl7CiAgICAgICAgICAgICAgICBpbnQgbD1sY2EoYTEsYjEsbG9nKTsKICAgICAgICAgICAgICAgIGNvdXQ8PG1heChxdWVyeV91cChhMSxsLG4pLHF1ZXJ5X3VwKGIxLGwsbikpPDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcihpPTE7aTw9bjtpKyspewogICAgICAgICAgICBhZGpbaV0uY2xlYXIoKTsKICAgICAgICAgICAgZWRnZXNbaV0uY2xlYXIoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQp2b2lkIGRmcyhpbnQgdSxpbnQgZmF0aGVyLGludCBsb2cpCnsKICAgIHBhcmVudFt1XT1mYXRoZXI7CiAgICBkcFt1XVswXT1mYXRoZXI7CiAgICBmb3IoaW50IGk9MTtpPD1sb2c7aSsrKQogICAgICAgIGRwW3VdW2ldPWRwW2RwW3VdW2ktMV1dW2ktMV07CiAgICBpbnQgZmxhZz0wLHRlbXA7CiAgICBmb3IoaW50IGk9MDtpPGFkalt1XS5zaXplKCk7aSsrKXsKICAgICAgICB0ZW1wPWFkalt1XVtpXS5maXJzdDsKICAgICAgICBpZih0ZW1wIT1mYXRoZXIpewogICAgICAgICAgICBsZXZlbFt0ZW1wXT1sZXZlbFt1XSsxOwogICAgICAgICAgICBkZnModGVtcCx1LGxvZyk7CiAgICAgICAgICAgIHN1YnRyZWVbdV0rPXN1YnRyZWVbdGVtcF0rMTsKICAgICAgICAgICAgZmxhZz0xOwogICAgICAgIH0KICAgIH0KICAgIGlmKGZsYWc9PTApCiAgICAgICAgc3VidHJlZVt1XT0xOwp9CnZvaWQgaGxkKGludCB1LGludCBwLGludCB2YWx1ZSkKewogICAgaWYoaGVhZFt1XT09LTEpCiAgICAgICAgaGVhZFt1XT11OwogICAgZWxzZQogICAgICAgIGhlYWRbdV09aGVhZFtwXTsKICAgIGxvY2F0aW9uW3VdPXBvczsKICAgIGFycltwb3MrK109dmFsdWU7CiAgICBpbnQgc3VtPS0xOwogICAgaW50IG1heHN1YnRyZWU9MCxzcGVjaWFsPS0xOwogICAgZm9yKGludCBpPTA7aTxhZGpbdV0uc2l6ZSgpO2krKyl7CiAgICAgICAgaWYoYWRqW3VdW2ldLmZpcnN0IT1wKXsKICAgICAgICAgICAgaWYoc3VidHJlZVthZGpbdV1baV0uZmlyc3RdPm1heHN1YnRyZWUpewogICAgICAgICAgICAgICAgbWF4c3VidHJlZT1zdWJ0cmVlW2Fkalt1XVtpXS5maXJzdF07CiAgICAgICAgICAgICAgICBzdW09YWRqW3VdW2ldLnNlY29uZDsKICAgICAgICAgICAgICAgIHNwZWNpYWw9YWRqW3VdW2ldLmZpcnN0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoc3BlY2lhbCE9LTEpewogICAgICAgIGhsZChzcGVjaWFsLHUsc3VtKTsKICAgICAgICBmb3IoaW50IGk9MDtpPGFkalt1XS5zaXplKCk7aSsrKXsKICAgICAgICAgICAgaWYoYWRqW3VdW2ldLmZpcnN0IT1zcGVjaWFsICYmIGFkalt1XVtpXS5maXJzdCE9cCl7CiAgICAgICAgICAgICAgICBoZWFkW2Fkalt1XVtpXS5maXJzdF09LTE7CiAgICAgICAgICAgICAgICBobGQoYWRqW3VdW2ldLmZpcnN0LHUsYWRqW3VdW2ldLnNlY29uZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0Kdm9pZCB1cGRhdGUoaW50IHUsaW50IGxvdyxpbnQgaGlnaCxpbnQgcG9zLGludCB0b2NoYW5nZSkKewogICAgaWYodTxsb3cgfHwgdT5oaWdoKQogICAgICAgIHJldHVybjsKICAgIGlmKGxvdz09aGlnaCl7CiAgICAgICAgc2VnVHJlZVtwb3NdPXRvY2hhbmdlOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQ9KGxvdytoaWdoKS8yOwogICAgdXBkYXRlKHUsbG93LG1pZCwyKnBvcysxLHRvY2hhbmdlKTsKICAgIHVwZGF0ZSh1LG1pZCsxLGhpZ2gsMipwb3MrMix0b2NoYW5nZSk7CiAgICBzZWdUcmVlW3Bvc109KHNlZ1RyZWVbMipwb3MrMV0+c2VnVHJlZVsyKnBvcysyXSk/c2VnVHJlZVsyKnBvcysxXTpzZWdUcmVlWzIqcG9zKzJdOwp9CnZvaWQgYnVpbGQoaW50IGxvdyxpbnQgaGlnaCxpbnQgcG9zKQp7CiAgICBpZihsb3c9PWhpZ2gpewogICAgICAgIHNlZ1RyZWVbcG9zXT1hcnJbbG93XTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbWlkPShsb3craGlnaCkvMjsKICAgIGJ1aWxkKGxvdyxtaWQsMipwb3MrMSk7CiAgICBidWlsZChtaWQrMSxoaWdoLDIqcG9zKzIpOwogICAgc2VnVHJlZVtwb3NdPShzZWdUcmVlWzIqcG9zKzFdPnNlZ1RyZWVbMipwb3MrMl0pP3NlZ1RyZWVbMipwb3MrMV06c2VnVHJlZVsyKnBvcysyXTsKfQppbnQgbGNhKGludCBhLGludCBiLGludCBsb2cpCnsKICAgIGlmKGxldmVsW2FdPGxldmVsW2JdKQogICAgICAgIHN3YXAoYSxiKTsKICAgIGZvcihpbnQgaT1sb2c7aT49MDtpLS0pewogICAgICAgIGlmKGxldmVsW2FdLShpbnQpKHBvdygyLGkpKzAuNSk+PWxldmVsW2JdKQogICAgICAgICAgICBhPWRwW2FdW2ldOwogICAgfQogICAgaWYoYT09YikKICAgICAgICByZXR1cm4gYTsKICAgIGZvcihpbnQgaT1sb2c7aT49MDtpLS0pewogICAgICAgIGlmKGRwW2FdW2ldIT1kcFtiXVtpXSl7CiAgICAgICAgICAgIGE9ZHBbYV1baV07CiAgICAgICAgICAgIGI9ZHBbYl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwW2FdWzBdOwp9CmludCBxdWVyeV91cChpbnQgYSxpbnQgbCxpbnQgbikKewogICAgaW50IG1heGltdW09MDsKICAgIHdoaWxlKHRydWUpewogICAgaWYoYT09bCkKICAgICAgICByZXR1cm4gbWF4aW11bTsKICAgIGlmKGhlYWRbYV09PWhlYWRbbF0pCiAgICAgICAgcmV0dXJuIG1heGltdW09bWF4KG1heGltdW0scXVlcnkobG9jYXRpb25baGVhZFthXV0sbG9jYXRpb25bYV0sMCxuLTEsMCkpOwogICAgZWxzZSBpZihoZWFkW2FdIT1oZWFkW2xdKXsKICAgICAgICBtYXhpbXVtPW1heChtYXhpbXVtLHF1ZXJ5KGxvY2F0aW9uW2hlYWRbYV1dLGxvY2F0aW9uW2FdLDAsbi0xLDApKTsKICAgICAgICBhPXBhcmVudFtoZWFkW2FdXTsKICAgIH0KICAgIH0KfQppbnQgcXVlcnkoaW50IHFsb3csaW50IHFoaWdoLGludCBsb3csaW50IGhpZ2gsaW50IHBvcykKewogICAgaWYocWhpZ2g8bG93IHx8IHFsb3c+aGlnaCkKICAgICAgICByZXR1cm4gLTE7CiAgICBpZihsb3c+PXFsb3cgJiYgaGlnaDw9cWhpZ2gpCiAgICAgICAgcmV0dXJuIHNlZ1RyZWVbcG9zXTsKICAgIGludCBtaWQ9KGxvdytoaWdoKS8yOwogICAgcmV0dXJuIG1heChxdWVyeShxbG93LHFoaWdoLGxvdyxtaWQsMipwb3MrMSkscXVlcnkocWxvdyxxaGlnaCxtaWQrMSxoaWdoLDIqcG9zKzIpKTsKfQo=