#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAX 10020
#define MAXLVL 15
#define pii pair<int,int>
#define rl(x) scanf("%d",&x)
int dp[MAXLVL+1][MAX+20],depth[MAXLVL+1],dist[MAX],parent[MAX];
vector<pii>G[MAX+12];
void dfs(int cur,int par)
{
int sz=G[cur].size();
for(int i=0;i<sz;i++)
{
if(G[cur][i].first!=par)
{
dist[G[cur][i].first]=dist[cur]+G[cur][i].second;
parent[G[cur][i].first]=cur;
dfs(G[cur][i].first,cur);
}
}
}
int LCA(int u,int v)
{
if(depth[u]<depth[v])
swap(u,v);
int diff=depth[u]-depth[v];
for(int i=0; i<MAXLVL; i++)
if( (diff>>i)&1 )
{
u = dp[i][u];
}
if(u == v)
return u;
for(int i=MAXLVL-1; i>=0; i--)
if(dp[i][u] != dp[i][v])
{
u = dp[i][u];
v = dp[i][v];
}
return dp[0][u];
}
int getK(int p , int q , int k)
{
int a = LCA(p,q) , d ;
if( a == p )
{
d = depth[q] - depth[p] + 1 ;
swap(p,q);
k = d - k + 1 ;
}
else if( a == q ) ;
else
{
if(k>depth[p]-depth[a]+1)
{
d = depth[p] + depth[q] - 2 * depth[a] + 1 ;
k = d - k + 1 ;
swap(p,q);
}
else;
}
int lg ;
for( lg = 1 ; (1 << lg) <= depth[p] ; ++lg ); lg--;
k--;
for( int i = lg ; i >= 0 ; i-- )
{
if( (1 << i) <= k )
{
p = dp[i][p];
k -= ( 1 << i );
}
}
return p;
}
void reset()
{
for(int i=0;i<MAX;i++)
G[i].clear();
memset(depth,0,sizeof depth);
for(int i=1;i<MAX;i++)
parent[i]=i,dist[i]=0;
parent[0]=-1;
}
int main()
{
int t,n;
rl(t);
while(t--)
{
int u,v,w;
rl(n);
reset();
for(int i=0;i<n-1;i++)
{
rl(u),rl(v),rl(w);
u--,v--;
G[u].push_back(pii(v,w));
G[v].push_back(pii(u,w));
depth[v]=depth[u]+1;
}
parent[0]=-1;
dfs(0,-1);
for(int i=0;i<MAXLVL;i++)
for(int j=0;j<n;j++)
dp[i][j]=-1;
for(int i=0;i<n;i++)
dp[0][i]=parent[i];
for(int i=1;i<MAXLVL;i++)
for(int j=0;j<n;j++)
if(dp[i-1][j]!=-1)
dp[i][j] = dp[i-1][dp[i-1][j]];
while(1)
{
string s;
int x,y,z;
cin>>s;
if(s[1]=='I')
{
rl(x),rl(y);
x--,y--;
printf("%d\n",dist[x]+dist[y]-2*dist[LCA(x,y)]);
}
else if(s[1]=='T')
{
rl(x),rl(y),rl(z);
x--,y--;
cout<<getK(x,y,z)+1<<endl;
}
else
break;
}
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTUFYIDEwMDIwCiNkZWZpbmUgTUFYTFZMIDE1CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBybCh4KSBzY2FuZigiJWQiLCZ4KQppbnQgZHBbTUFYTFZMKzFdW01BWCsyMF0sZGVwdGhbTUFYTFZMKzFdLGRpc3RbTUFYXSxwYXJlbnRbTUFYXTsKdmVjdG9yPHBpaT5HW01BWCsxMl07CnZvaWQgZGZzKGludCBjdXIsaW50IHBhcikKewoJaW50IHN6PUdbY3VyXS5zaXplKCk7Cglmb3IoaW50IGk9MDtpPHN6O2krKykKCXsKCQlpZihHW2N1cl1baV0uZmlyc3QhPXBhcikKCQl7CgkJCWRpc3RbR1tjdXJdW2ldLmZpcnN0XT1kaXN0W2N1cl0rR1tjdXJdW2ldLnNlY29uZDsKCQkJcGFyZW50W0dbY3VyXVtpXS5maXJzdF09Y3VyOwoJCQlkZnMoR1tjdXJdW2ldLmZpcnN0LGN1cik7CgkJfQoJfQp9CmludCBMQ0EoaW50IHUsaW50IHYpCnsKCWlmKGRlcHRoW3VdPGRlcHRoW3ZdKQoJc3dhcCh1LHYpOwoJaW50IGRpZmY9ZGVwdGhbdV0tZGVwdGhbdl07Cglmb3IoaW50IGk9MDsgaTxNQVhMVkw7IGkrKykgCglpZiggKGRpZmY+PmkpJjEgKSAKCXsKCQl1ID0gZHBbaV1bdV07Cgl9CglpZih1ID09IHYpIAoJcmV0dXJuIHU7Cglmb3IoaW50IGk9TUFYTFZMLTE7IGk+PTA7IGktLSkgCglpZihkcFtpXVt1XSAhPSBkcFtpXVt2XSkgCgl7CgkJdSA9IGRwW2ldW3VdOwoJCXYgPSBkcFtpXVt2XTsKCX0KCXJldHVybiBkcFswXVt1XTsKfQppbnQgZ2V0SyhpbnQgcCAsIGludCBxICwgaW50IGspCnsKCWludCBhID0gTENBKHAscSkgLCBkIDsKCWlmKCBhID09IHAgKQoJewoJCWQgPSBkZXB0aFtxXSAtIGRlcHRoW3BdICsgMSA7CiAgICAgICAgCXN3YXAocCxxKTsgCiAgICAgICAgCWsgPSBkIC0gayArIDEgOwogICAgCX0KICAgIAllbHNlIGlmKCBhID09IHEgKSA7IAogICAgCWVsc2UgCgl7CiAgICAgICAgCWlmKGs+ZGVwdGhbcF0tZGVwdGhbYV0rMSkgCgkJeyAKICAgICAgICAJICAgIGQgPSBkZXB0aFtwXSArIGRlcHRoW3FdIC0gMiAqIGRlcHRoW2FdICsgMSA7CiAgICAgICAgCSAgICBrID0gZCAtIGsgKyAxIDsKICAgICAgICAJICAgIHN3YXAocCxxKTsKICAgICAgICAJfQogICAgICAgIAllbHNlOwogICAgCX0KICAgICAgICBpbnQgbGcgOyAKCWZvciggbGcgPSAxIDsgKDEgPDwgbGcpIDw9IGRlcHRoW3BdIDsgKytsZyApOyBsZy0tOwogICAgICAgIGstLTsKICAgICAgICBmb3IoIGludCBpID0gbGcgOyBpID49IDAgOyBpLS0gKQoJewogICAgICAgICAgICBpZiggKDEgPDwgaSkgPD0gayApCgkgICAgewogICAgICAgICAgICBwID0gZHBbaV1bcF07CiAgICAgICAgICAgIGsgLT0gKCAxIDw8IGkgKTsKICAgICAgICAgICB9CiAgICAgICAgfQogICAgcmV0dXJuIHA7Cn0Kdm9pZCByZXNldCgpCnsKCWZvcihpbnQgaT0wO2k8TUFYO2krKykKCUdbaV0uY2xlYXIoKTsKCW1lbXNldChkZXB0aCwwLHNpemVvZiBkZXB0aCk7Cglmb3IoaW50IGk9MTtpPE1BWDtpKyspCglwYXJlbnRbaV09aSxkaXN0W2ldPTA7CglwYXJlbnRbMF09LTE7Cn0KaW50IG1haW4oKQp7CglpbnQgdCxuOwoJcmwodCk7Cgl3aGlsZSh0LS0pCgl7CgkJaW50IHUsdix3OwoJCXJsKG4pOwoJCXJlc2V0KCk7CgkJZm9yKGludCBpPTA7aTxuLTE7aSsrKQoJCXsKCQkJcmwodSkscmwodikscmwodyk7CgkJCXUtLSx2LS07CgkJCUdbdV0ucHVzaF9iYWNrKHBpaSh2LHcpKTsKCQkJR1t2XS5wdXNoX2JhY2socGlpKHUsdykpOwoJCQlkZXB0aFt2XT1kZXB0aFt1XSsxOwoJCX0KCQlwYXJlbnRbMF09LTE7CgkJZGZzKDAsLTEpOwoJCWZvcihpbnQgaT0wO2k8TUFYTFZMO2krKykKCQkgICBmb3IoaW50IGo9MDtqPG47aisrKQoJCSAgICAgICBkcFtpXVtqXT0tMTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCSAgIGRwWzBdW2ldPXBhcmVudFtpXTsKCQlmb3IoaW50IGk9MTtpPE1BWExWTDtpKyspCgkJICAgIGZvcihpbnQgaj0wO2o8bjtqKyspCgkJCWlmKGRwW2ktMV1bal0hPS0xKQoJCQkgIGRwW2ldW2pdID0gZHBbaS0xXVtkcFtpLTFdW2pdXTsKCQl3aGlsZSgxKQoJCXsKCQkJc3RyaW5nIHM7CgkJCWludCB4LHksejsKCQkJY2luPj5zOwoJCQlpZihzWzFdPT0nSScpCgkJCXsKCQkJcmwoeCkscmwoeSk7CgkJCXgtLSx5LS07CgkJCXByaW50ZigiJWRcbiIsZGlzdFt4XStkaXN0W3ldLTIqZGlzdFtMQ0EoeCx5KV0pOwoJCQl9CQkKCQkJZWxzZSBpZihzWzFdPT0nVCcpCgkJCXsKCQkJcmwoeCkscmwoeSkscmwoeik7CgkJCXgtLSx5LS07CgkJCWNvdXQ8PGdldEsoeCx5LHopKzE8PGVuZGw7CgoJCQkJCgkJCX0KCQkJZWxzZQoJCQlicmVhazsKCQkJCgkJfQoJfQoJCgkKfQ==