//这里填你的代码^^
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 200010, M = N * 2, INF = 0x3f3f3f3f;
int n;
int h[N], e[M], w[M], ne[M], idx;
int d[N], f[N], deg[N];
inline void add(int a, int b, int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
inline int dfs_d(int u, int fa)
{
if (deg[u] == 1)
{
d[u] = INF;
return d[u];
}
d[u] = 0;
for (int i = h[u]; ~i; i = ne[i])
{
int j = e[i];
if (j == fa) continue;
d[u] += min(w[i], dfs_d(j, u));
}
return d[u];
}
inline void dfs_f(int u, int fa)
{
for (int i = h[u]; ~i; i = ne[i])
{
int j = e[i];
if (j == fa) continue;
if (deg[j] == 1) f[j] = w[i] < (f[u] - w[i]) ? w[i] : (f[u] - w[i]);
else
{
int cntr = w[i] < d[j] ? w[i] : d[j];
int cntl = (f[u] - cntr) < w[i] ? (f[u] - cntr) : w[i];
f[j] = d[j] + cntl;
dfs_f(j, u);
}
}
}
inline void solve()
{
scanf("%d", &n);
memset(h, -1, sizeof h);
memset(deg, 0, sizeof deg);
idx = 0;
for (int i = 0; i < n - 1; i ++ )
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
add(a, b, c), add(b, a, c);
deg[a] ++, deg[b] ++;
}
int root = 1;
while (root <= n && deg[root] == 1) root ++;
if (root > n)
{
cout << w[0] << endl;
return;
}
dfs_d(root, -1);
f[root] = d[root];
dfs_f(root, -1);
int res = 0;
for (int i = 1; i <= n; i ++ )
if (res < f[i])
res = f[i];
cout << res << endl;
}
int main()
{
int t = 1;
scanf("%d", &t);
while (t -- ) solve();
return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~