#include<bits/stdc++.h>
#include<unordered_set>
using namespace std;
#define fio ios_base::sync_with_stdio(false)
#define ll long long int
#define s(x) scanf("%lld",&x)
#define s2(x,y) s(x)+s(y)
#define s3(x,y,z) s(x)+s(y)+s(z)
#define p(x) printf("%lld\n",x)
#define p2(x,y) p(x)+p(y)
#define p3(x,y,z) p(x)+p(y)+p(z)
#define F(i,a,b) for(ll i = (ll)(a); i <= (ll)(b); i++)
#define RF(i,a,b) for(ll i = (ll)(a); i >= (ll)(b); i--)
#define ff first
#define ss second
#define mp(x,y) make_pair(x,y)
#define pll pair<ll,ll>
#define pb push_back
ll inf = 1e18;
ll mod = 1e9 + 7 ;
ll gcd(ll a , ll b){return b==0?a:gcd(b,a%b);}
vector<pll>adj[100005];
// ret will contain the total travel distance (travelled one-sidedly) by the visitors ,
// that's why at the end we are multiplying by 2 as people from both sides are crossing
// a particular edge.
ll ret=0;
ll n;
ll dfs(ll par, ll u){
ll ans=1;
for(ll i=0;i<adj[u].size();i++){
ll v = adj[u][i].first;
ll wt = adj[u][i].second;
if(v==par)continue;
// nodes will contain the total number of nodes present in the tree subrooted at child 'v'
ll nodes = dfs(u,v);
ret+=2*min(nodes,n-nodes)*wt;
ans+=nodes;
}
// ans contains the total number of nodes present in the tree subrooted at node 'u'
return ans;
}
int main()
{
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
ll t=1;
s(t);
ll tc=1;
while(t--){
ret=0;
s(n);
F(i,1,n)adj[i].clear();
F(i,1,n-1){
ll u,v,x;
s3(u,v,x);
adj[u].pb({v,x});
adj[v].pb({u,x});
}
dfs(-1,1);
cout<<"Case #"<<tc++<<": "<<ret<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8dW5vcmRlcmVkX3NldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICNkZWZpbmUgZmlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpCiAKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CgojZGVmaW5lIHMoeCkgc2NhbmYoIiVsbGQiLCZ4KQojZGVmaW5lIHMyKHgseSkgcyh4KStzKHkpCiNkZWZpbmUgczMoeCx5LHopIHMoeCkrcyh5KStzKHopCiAKI2RlZmluZSBwKHgpIHByaW50ZigiJWxsZFxuIix4KQojZGVmaW5lIHAyKHgseSkgcCh4KStwKHkpCiNkZWZpbmUgcDMoeCx5LHopIHAoeCkrcCh5KStwKHopCiNkZWZpbmUgRihpLGEsYikgZm9yKGxsIGkgPSAobGwpKGEpOyBpIDw9IChsbCkoYik7IGkrKykKI2RlZmluZSBSRihpLGEsYikgZm9yKGxsIGkgPSAobGwpKGEpOyBpID49IChsbCkoYik7IGktLSkKIAojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgbXAoeCx5KSBtYWtlX3BhaXIoeCx5KQojZGVmaW5lIHBsbCBwYWlyPGxsLGxsPgojZGVmaW5lIHBiIHB1c2hfYmFjawoKbGwgaW5mID0gMWUxODsKbGwgbW9kID0gMWU5ICsgNyA7CmxsIGdjZChsbCBhICwgbGwgYil7cmV0dXJuIGI9PTA/YTpnY2QoYixhJWIpO30KCgoKdmVjdG9yPHBsbD5hZGpbMTAwMDA1XTsKCi8vIHJldCB3aWxsIGNvbnRhaW4gdGhlIHRvdGFsIHRyYXZlbCBkaXN0YW5jZSAodHJhdmVsbGVkIG9uZS1zaWRlZGx5KSBieSB0aGUgdmlzaXRvcnMgLCAKLy8gdGhhdCdzIHdoeSBhdCB0aGUgZW5kIHdlIGFyZSBtdWx0aXBseWluZyBieSAyIGFzIHBlb3BsZSBmcm9tIGJvdGggc2lkZXMgYXJlIGNyb3NzaW5nIAovLyBhIHBhcnRpY3VsYXIgZWRnZS4KbGwgcmV0PTA7CmxsIG47CgpsbCBkZnMobGwgcGFyLCBsbCB1KXsKICBsbCBhbnM9MTsKICBmb3IobGwgaT0wO2k8YWRqW3VdLnNpemUoKTtpKyspewogICAgbGwgdiA9IGFkalt1XVtpXS5maXJzdDsKICAgIGxsIHd0ID0gYWRqW3VdW2ldLnNlY29uZDsKCiAgICBpZih2PT1wYXIpY29udGludWU7CgogICAgLy8gbm9kZXMgd2lsbCBjb250YWluIHRoZSB0b3RhbCBudW1iZXIgb2Ygbm9kZXMgcHJlc2VudCBpbiB0aGUgdHJlZSBzdWJyb290ZWQgYXQgY2hpbGQgJ3YnCiAgICBsbCBub2RlcyA9IGRmcyh1LHYpOwogICAgcmV0Kz0yKm1pbihub2RlcyxuLW5vZGVzKSp3dDsKICAgIGFucys9bm9kZXM7CiAgfQogIC8vIGFucyBjb250YWlucyB0aGUgdG90YWwgbnVtYmVyIG9mIG5vZGVzIHByZXNlbnQgaW4gdGhlIHRyZWUgc3Vicm9vdGVkIGF0IG5vZGUgJ3UnCiAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CiAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICBsbCB0PTE7CiAgcyh0KTsKICBsbCB0Yz0xOwogIHdoaWxlKHQtLSl7CiAgICByZXQ9MDsKICAgIHMobik7CiAgICBGKGksMSxuKWFkaltpXS5jbGVhcigpOwoKICAgIEYoaSwxLG4tMSl7CiAgICAgIGxsIHUsdix4OwogICAgICBzMyh1LHYseCk7CiAgICAgIGFkalt1XS5wYih7dix4fSk7CiAgICAgIGFkalt2XS5wYih7dSx4fSk7CiAgICB9CgogICAgZGZzKC0xLDEpOwogICAgY291dDw8IkNhc2UgIyI8PHRjKys8PCI6ICI8PHJldDw8ZW5kbDsKICB9Cn0=