#include<iostream>
#include<vector>
using namespace std;
#define ll long long
#define ull unsigned long long
vector<vector<int>> G[50001];
bool P[50001];
int res,start;
void DFS(int u,int path){
P[u]=1;
for(vector<int>vt:G[u]){
if(!P[vt[0]])
DFS(vt[0],path+vt[1]);
}
if(path>res){
res=path;
start=u;
}
}
void clearp(int n){
for(int i=1;i<=n;i++)
P[i]=0;
}
void exec(){
int n,u,v,l;
cin>>n;
clearp(n);
for(int i=1;i<=n;i++) G[i].clear();
for(int i=1;i<n;i++){
cin>>u>>v>>l;
G[u].push_back({v,l});
G[v].push_back({u,l});
}
res=-1e9,start=1;
DFS(1,0);
clearp(n);
DFS(start,0);
cout<<res<<endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin>>t;
while(t--)
exec();
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCgp2ZWN0b3I8dmVjdG9yPGludD4+IEdbNTAwMDFdOwpib29sIFBbNTAwMDFdOwppbnQgcmVzLHN0YXJ0OwoKdm9pZCBERlMoaW50IHUsaW50IHBhdGgpewoJUFt1XT0xOwoJCglmb3IodmVjdG9yPGludD52dDpHW3VdKXsKCQlpZighUFt2dFswXV0pCgkJCURGUyh2dFswXSxwYXRoK3Z0WzFdKTsKCX0KCQoJaWYocGF0aD5yZXMpewoJCXJlcz1wYXRoOwoJCXN0YXJ0PXU7Cgl9Cn0KCnZvaWQgY2xlYXJwKGludCBuKXsKCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJCVBbaV09MDsKfQoKdm9pZCBleGVjKCl7CglpbnQgbix1LHYsbDsKCWNpbj4+bjsKCQoJY2xlYXJwKG4pOwoJZm9yKGludCBpPTE7aTw9bjtpKyspIEdbaV0uY2xlYXIoKTsKCQoJZm9yKGludCBpPTE7aTxuO2krKyl7CgkJY2luPj51Pj52Pj5sOwoJCUdbdV0ucHVzaF9iYWNrKHt2LGx9KTsKCQlHW3ZdLnB1c2hfYmFjayh7dSxsfSk7Cgl9CgkKCXJlcz0tMWU5LHN0YXJ0PTE7CglERlMoMSwwKTsKCQoJY2xlYXJwKG4pOwoJCglERlMoc3RhcnQsMCk7CgkKCWNvdXQ8PHJlczw8ZW5kbDsKfQoKaW50IG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZSgwKTsKCWludCB0OwoJY2luPj50OwoKCXdoaWxlKHQtLSkKCWV4ZWMoKTsKCglyZXR1cm4gMDsKfQo=