#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#include<map>
#include<utility>
#include<iostream>
#define rl(x) scanf("%lld",&x)
#define ll long long
using namespace std;
ll cou=0,x,c,w;
#define pii pair<int,int>
vector<pii>G[50005];
int main()
{
ll t;
rl(t);
while(t--)
{
ll n,u,v,x,dis,res,m=0,ed;
rl(n);
ll vis[n+5];
for(ll i=0;i<n-1;i++)
{
rl(u),rl(v),rl(w);
G[u].push_back(pii(v,w));
G[v].push_back(pii(u,w));
}
memset(vis,0,sizeof(vis));
queue<pii>Q;
Q.push(pii(1,0));
vis[1]=1;
while(!Q.empty())
{
x=Q.front().first;
for(ll i=0;i<G[x].size();i++)
{
ed=G[x][i].first;
c=G[x][i].second;
if(!vis[ed])
{
vis[ed]=1;
dis=Q.front().second+c;
if(m<=dis)
{
m=dis;
res=ed;
}
//cout<<"pushing "<<ed<<" "<<dis<<endl;
Q.push(pii(ed,dis));
}
}
Q.pop();
}
//printf("res=%lld len=%lld",res,m);
memset(vis,0,sizeof(vis));
Q.push(pii(res,0));
vis[res]=1;
while(!Q.empty())
{
x=Q.front().first;
for(ll i=0;i<G[x].size();i++)
{
ed=G[x][i].first;
c=G[x][i].second;
if(!vis[ed])
{
vis[ed]=1;
dis=Q.front().second+c;
if(m<=dis)
{
m=dis;
res=ed;
}
//cout<<"pushing "<<ed<<" "<<dis<<endl;
Q.push(pii(ed,dis));
}
}
Q.pop();
}
printf("%lld\n",dis);
for(ll i=1;i<=n;i++)
G[i].clear();
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPHV0aWxpdHk+CiNpbmNsdWRlPGlvc3RyZWFtPgojZGVmaW5lIHJsKHgpIHNjYW5mKCIlbGxkIiwmeCkKI2RlZmluZSBsbCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGwgY291PTAseCxjLHc7CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KdmVjdG9yPHBpaT5HWzUwMDA1XTsKaW50IG1haW4oKQp7CglsbCB0OwoJcmwodCk7Cgl3aGlsZSh0LS0pCgl7CglsbCBuLHUsdix4LGRpcyxyZXMsbT0wLGVkOwoJcmwobik7CglsbCB2aXNbbis1XTsKCWZvcihsbCBpPTA7aTxuLTE7aSsrKQoJewoJCXJsKHUpLHJsKHYpLHJsKHcpOwoJCUdbdV0ucHVzaF9iYWNrKHBpaSh2LHcpKTsKCQlHW3ZdLnB1c2hfYmFjayhwaWkodSx3KSk7Cgl9CgltZW1zZXQodmlzLDAsc2l6ZW9mKHZpcykpOwoJcXVldWU8cGlpPlE7CglRLnB1c2gocGlpKDEsMCkpOwoJdmlzWzFdPTE7Cgl3aGlsZSghUS5lbXB0eSgpKQoJewoJCSB4PVEuZnJvbnQoKS5maXJzdDsKCQlmb3IobGwgaT0wO2k8R1t4XS5zaXplKCk7aSsrKQoJCXsKCQkJZWQ9R1t4XVtpXS5maXJzdDsKCQkJIGM9R1t4XVtpXS5zZWNvbmQ7CgkJCWlmKCF2aXNbZWRdKQoJCQl7CgkJCQl2aXNbZWRdPTE7CgkJCQlkaXM9US5mcm9udCgpLnNlY29uZCtjOwoJCQkJaWYobTw9ZGlzKQoJCQkJewkJCgkJCQkJbT1kaXM7CgkJCQkJcmVzPWVkOwoJCQkJfQoJCQkJLy9jb3V0PDwicHVzaGluZyAiPDxlZDw8IiAiPDxkaXM8PGVuZGw7CgkJCQlRLnB1c2gocGlpKGVkLGRpcykpOwoJCQl9CgkJfQoJCVEucG9wKCk7Cgl9CgkvL3ByaW50ZigicmVzPSVsbGQgbGVuPSVsbGQiLHJlcyxtKTsKCW1lbXNldCh2aXMsMCxzaXplb2YodmlzKSk7CglRLnB1c2gocGlpKHJlcywwKSk7Cgl2aXNbcmVzXT0xOwoJd2hpbGUoIVEuZW1wdHkoKSkKCXsKCQkgeD1RLmZyb250KCkuZmlyc3Q7CgkJZm9yKGxsIGk9MDtpPEdbeF0uc2l6ZSgpO2krKykKCQl7CgkJCWVkPUdbeF1baV0uZmlyc3Q7CgkJCWM9R1t4XVtpXS5zZWNvbmQ7CgkJCWlmKCF2aXNbZWRdKQoJCQl7CgkJCQl2aXNbZWRdPTE7CgkJCQlkaXM9US5mcm9udCgpLnNlY29uZCtjOwoJCQkJaWYobTw9ZGlzKQoJCQkJewkJCgkJCQkJbT1kaXM7CgkJCQkJcmVzPWVkOwoJCQkJfQoJCQkJLy9jb3V0PDwicHVzaGluZyAiPDxlZDw8IiAiPDxkaXM8PGVuZGw7CgkJCQlRLnB1c2gocGlpKGVkLGRpcykpOwoJCQl9CgkJfQoJCVEucG9wKCk7Cgl9CglwcmludGYoIiVsbGRcbiIsZGlzKTsKCWZvcihsbCBpPTE7aTw9bjtpKyspCglHW2ldLmNsZWFyKCk7Cgl9CgkKfSA=