#include<bits/stdc++.h>
#define fast_az_fuk ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long
#define ull unsigned ll
#define ld long double
#define pb push_back
#define pf push_front
#define dll deque<ll>
#define vll vector<ll>
#define vvll vector<vll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define dpll deque<pll>
#define mapll map<ll,ll>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define ms(a,x) memset(a,x,sizeof(a))
using namespace std;
ll n;
vvll adj; vvll up; vll tin,tout; ll timer; ll l;
vll level; vvll weight; vll distFromRoot;
class tupl{
public:
ll num,lev,par;
tupl(ll a,ll b,ll c){
num = a; lev=b; par = c;
}
};
void dfs(ll node = 1,ll parent = 1,ll dist=0){
tin[node]=++timer;
up[node][0] = parent;
distFromRoot[node] = dist;
for(ll i=1;i<=l;i++){
up[node][i] = up[up[node][i-1]][i-1];
}
for(ll i=0;i<adj[node].size();i++){
ll x = adj[node][i];
if(x==parent) continue;
dfs(x,node,dist+weight[node][i]);
}
tout[node]=++timer;
}
void bfs(){
queue<tupl> q;
q.push(tupl(1,0,1));
while(!q.empty()){
tupl t = q.front(); q.pop();
level[t.num]=t.lev;
for(ll x:adj[t.num]){
if(x==t.par) continue;
q.push(tupl(x,t.lev+1,t.num));
}
}
}
bool isAncestor(ll u,ll v){
return (tin[u]<=tin[v]&&tout[u]>=tout[v]);
}
ll LCA(ll u,ll v)
{
if(isAncestor(u,v)) return u;
else if(isAncestor(v,u)) return v;
for(ll i=l;i>=0;i--){
if(!isAncestor(up[u][i],v)){
u = up[u][i];
}
}
return up[u][0];
}
ll find(ll u,ll k){ // find the node, K distances up from u
for(ll i=l;i>=0;i--){
ll dist = (1LL<<i);
if(dist<=k){ u = up[u][i]; k-=dist; }
}
return u;
}
int32_t main()
{
fast_az_fuk
ll testcase; cin>>testcase;
for(ll test=1;test<=testcase;test++)
{//cout<<"Case #"<<test<<": ";
cin>>n; adj.clear(); adj.resize(n+1); weight.clear(); weight.resize(n+1);
l = ceil(log2(n));
up.clear(); up.resize(n+1,vll(l+1));
tin.resize(n+1); tout.resize(n+1); level.resize(n+1); distFromRoot.resize(n+1); timer=0;
for(ll i=1;i<n;i++){
ll a,b; cin>>a>>b; ll w; cin>>w;
adj[a].pb(b); adj[b].pb(a); weight[a].pb(w); weight[b].pb(w);
}
dfs(); bfs();
while(1){
string s; cin>>s; if(s=="DONE") break; ll a,b; cin>>a>>b; ll k=-1;
if(s=="KTH") cin>>k;
if(k==-1){
ll lc = LCA(a,b);
cout<<(distFromRoot[a]+distFromRoot[b])-2*distFromRoot[lc]<<endl;
}
else{
ll lc = LCA(a,b);
ll numOfNodes = (level[a]+level[b]) - 2*level[lc]+1;
if(k<=level[lc]-level[a]+1) cout<<find(a,k-1)<<endl;
else cout<<find(b,numOfNodes-k)<<endl;
}
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBmYXN0X2F6X2Z1ayBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgbGwgbG9uZyBsb25nIAojZGVmaW5lIHVsbCB1bnNpZ25lZCBsbAojZGVmaW5lIGxkIGxvbmcgZG91YmxlIAojZGVmaW5lIHBiIHB1c2hfYmFjayAKI2RlZmluZSBwZiBwdXNoX2Zyb250CiNkZWZpbmUgZGxsIGRlcXVlPGxsPiAKI2RlZmluZSB2bGwgdmVjdG9yPGxsPgojZGVmaW5lIHZ2bGwgdmVjdG9yPHZsbD4gCiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+IAojZGVmaW5lIHZwbGwgdmVjdG9yPHBsbD4KI2RlZmluZSBkcGxsIGRlcXVlPHBsbD4KI2RlZmluZSBtYXBsbCBtYXA8bGwsbGw+CiNkZWZpbmUgZW5kbCAiXG4iIAojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKSAKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLHgsc2l6ZW9mKGEpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsbCBuOwp2dmxsIGFkajsgdnZsbCB1cDsgdmxsIHRpbix0b3V0OyBsbCB0aW1lcjsgbGwgbDsKdmxsIGxldmVsOyB2dmxsIHdlaWdodDsgdmxsIGRpc3RGcm9tUm9vdDsKY2xhc3MgdHVwbHsKcHVibGljOgogICAgbGwgbnVtLGxldixwYXI7CiAgICB0dXBsKGxsIGEsbGwgYixsbCBjKXsKICAgICAgICBudW0gPSBhOyBsZXY9YjsgcGFyID0gYzsKICAgIH0KfTsKdm9pZCBkZnMobGwgbm9kZSA9IDEsbGwgcGFyZW50ID0gMSxsbCBkaXN0PTApewogICAgdGluW25vZGVdPSsrdGltZXI7CiAgICB1cFtub2RlXVswXSA9IHBhcmVudDsKICAgIGRpc3RGcm9tUm9vdFtub2RlXSA9IGRpc3Q7CiAgICBmb3IobGwgaT0xO2k8PWw7aSsrKXsKICAgICAgICB1cFtub2RlXVtpXSA9IHVwW3VwW25vZGVdW2ktMV1dW2ktMV07CiAgICB9CiAgICBmb3IobGwgaT0wO2k8YWRqW25vZGVdLnNpemUoKTtpKyspewogICAgICAgIGxsIHggPSBhZGpbbm9kZV1baV07CiAgICAgICAgaWYoeD09cGFyZW50KSBjb250aW51ZTsKICAgICAgICBkZnMoeCxub2RlLGRpc3Qrd2VpZ2h0W25vZGVdW2ldKTsKICAgIH0KICAgIHRvdXRbbm9kZV09Kyt0aW1lcjsKfQp2b2lkIGJmcygpewogICAgcXVldWU8dHVwbD4gcTsKICAgIHEucHVzaCh0dXBsKDEsMCwxKSk7CiAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICB0dXBsIHQgPSBxLmZyb250KCk7IHEucG9wKCk7CiAgICAgICAgbGV2ZWxbdC5udW1dPXQubGV2OwogICAgICAgIGZvcihsbCB4OmFkalt0Lm51bV0pewogICAgICAgICAgICBpZih4PT10LnBhcikgY29udGludWU7CiAgICAgICAgICAgIHEucHVzaCh0dXBsKHgsdC5sZXYrMSx0Lm51bSkpOwogICAgICAgIH0KICAgIH0KfQpib29sIGlzQW5jZXN0b3IobGwgdSxsbCB2KXsKICAgIHJldHVybiAodGluW3VdPD10aW5bdl0mJnRvdXRbdV0+PXRvdXRbdl0pOwp9CmxsIExDQShsbCB1LGxsIHYpCnsKICAgIGlmKGlzQW5jZXN0b3IodSx2KSkgcmV0dXJuIHU7CiAgICBlbHNlIGlmKGlzQW5jZXN0b3Iodix1KSkgcmV0dXJuIHY7CiAgICBmb3IobGwgaT1sO2k+PTA7aS0tKXsKICAgICAgICBpZighaXNBbmNlc3Rvcih1cFt1XVtpXSx2KSl7CiAgICAgICAgICAgIHUgPSB1cFt1XVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdXBbdV1bMF07Cn0KbGwgZmluZChsbCB1LGxsIGspeyAvLyBmaW5kIHRoZSBub2RlLCBLIGRpc3RhbmNlcyB1cCBmcm9tIHUKICAgIGZvcihsbCBpPWw7aT49MDtpLS0pewogICAgICAgIGxsIGRpc3QgPSAoMUxMPDxpKTsKICAgICAgICBpZihkaXN0PD1rKXsgdSA9IHVwW3VdW2ldOyBrLT1kaXN0OyB9CiAgICB9CiAgICByZXR1cm4gdTsKfQppbnQzMl90IG1haW4oKQp7CiAgICBmYXN0X2F6X2Z1awogICAgbGwgdGVzdGNhc2U7IGNpbj4+dGVzdGNhc2U7CiAgICBmb3IobGwgdGVzdD0xO3Rlc3Q8PXRlc3RjYXNlO3Rlc3QrKykKICAgIHsvL2NvdXQ8PCJDYXNlICMiPDx0ZXN0PDwiOiAiOwogICAgICAgIGNpbj4+bjsgYWRqLmNsZWFyKCk7IGFkai5yZXNpemUobisxKTsgd2VpZ2h0LmNsZWFyKCk7IHdlaWdodC5yZXNpemUobisxKTsKICAgICAgICBsID0gY2VpbChsb2cyKG4pKTsKICAgICAgICB1cC5jbGVhcigpOyB1cC5yZXNpemUobisxLHZsbChsKzEpKTsKICAgICAgICB0aW4ucmVzaXplKG4rMSk7IHRvdXQucmVzaXplKG4rMSk7IGxldmVsLnJlc2l6ZShuKzEpOyBkaXN0RnJvbVJvb3QucmVzaXplKG4rMSk7IHRpbWVyPTA7CiAgICAgICAgZm9yKGxsIGk9MTtpPG47aSsrKXsKICAgICAgICAgICAgbGwgYSxiOyBjaW4+PmE+PmI7IGxsIHc7IGNpbj4+dzsKICAgICAgICAgICAgYWRqW2FdLnBiKGIpOyBhZGpbYl0ucGIoYSk7IHdlaWdodFthXS5wYih3KTsgd2VpZ2h0W2JdLnBiKHcpOwogICAgICAgIH0KICAgICAgICBkZnMoKTsgYmZzKCk7CiAgICAgICAgd2hpbGUoMSl7CiAgICAgICAgICAgIHN0cmluZyBzOyBjaW4+PnM7IGlmKHM9PSJET05FIikgYnJlYWs7IGxsIGEsYjsgY2luPj5hPj5iOyBsbCBrPS0xOwogICAgICAgICAgICBpZihzPT0iS1RIIikgY2luPj5rOwogICAgICAgICAgICBpZihrPT0tMSl7CiAgICAgICAgICAgICAgICBsbCBsYyA9IExDQShhLGIpOwogICAgICAgICAgICAgICAgY291dDw8KGRpc3RGcm9tUm9vdFthXStkaXN0RnJvbVJvb3RbYl0pLTIqZGlzdEZyb21Sb290W2xjXTw8ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgbGwgbGMgPSBMQ0EoYSxiKTsKICAgICAgICAgICAgICAgIGxsIG51bU9mTm9kZXMgPSAobGV2ZWxbYV0rbGV2ZWxbYl0pIC0gMipsZXZlbFtsY10rMTsKICAgICAgICAgICAgICAgIGlmKGs8PWxldmVsW2xjXS1sZXZlbFthXSsxKSBjb3V0PDxmaW5kKGEsay0xKTw8ZW5kbDsKICAgICAgICAgICAgICAgIGVsc2UgY291dDw8ZmluZChiLG51bU9mTm9kZXMtayk8PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dDw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9