# pragma GCC optimize ( 2 )
# pragma GCC optimize ( 3 , "Ofast" , "inline" )
# include <bits/stdc++.h>
# define inf 0x7fffffff
# define int long long
# define re register int
# define void inline void
# define eps 1e-8
# define ls ( p) p<< 1
# define rs ( p) p<< 1 | 1
# define pi acos ( - 1.0 )
# define pb push_back
# define P pair < int , int >
using namespace std;
const int M= 5e6 ;
const int N= 2 * 1e5 + 5 ;
struct node
{
int ver, edge, next;
} e[ N] ;
int tot, head[ N] ;
int n, d[ N] ;
void add ( int x, int y, int z)
{
e[ ++ tot] . ver= y;
e[ tot] . edge= z;
e[ tot] . next= head[ x] ;
head[ x] = tot;
}
void addedge ( int x, int y, int z)
{
add ( x, y, z) ; add ( y, x, z) ;
}
void dfs ( int x, int pre, int op)
{
int ret= 0 ;
d[ x] = op;
for ( re i= head[ x] ; i; i= e[ i] . next)
{
int y= e[ i] . ver;
int z= e[ i] . edge;
if ( y== pre) continue ;
dfs ( y, x, z) ;
ret+= d[ y] ;
}
d[ x] = max ( d[ x] , ret) ;
}
void init ( )
{
for ( re i= 0 ; i<= n; i++ ) head[ i] = d[ i] = 0 ;
tot= 0 ;
}
void solve ( )
{
cin>> n;
init ( ) ;
for ( re i= 1 ; i< n; i++ )
{
int x, y, z;
scanf ( "%lld%lld%lld" , & x, & y, & z) ;
addedge ( x, y, z) ;
}
dfs ( 1 , 1 , 0 ) ;
cout<< d[ 1 ] << endl;
}
signed main ( )
{
int T= 1 ;
cin>> T;
for ( int index= 1 ; index<= T; index++ )
{
solve ( ) ;
}
return 0 ;
}