#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define fastIO ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define point(n) fixed<<setprecision(n)
#define endl '\n'
#define mem(a,val) memset(a,val,sizeof(a))
#define pb push_back
typedef long long ll;
typedef unsigned long ul;
typedef unsigned long long ull;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
#define MOD 1000000000
struct pair_hash {
template <class T1, class T2>
size_t operator () (const pair<T1,T2> &p) const {
auto h1 = hash<T1>{}(p.first);
auto h2 = hash<T2>{}(p.second);
return h1 ^ h2;
}
};
class Graph{
public:
int n;
list<int> *adj;
unordered_map<pair<int,int>,int,pair_hash> mp;
vector<ll> count;
bool visited[100001];
Graph(int n){
this->n=n;
adj = new list<int>[n];
count.resize(n,1);
}
void addEdge(int u, int v, int w){
adj[u].push_back(v);
adj[v].push_back(u);
mp[{u,v}] = w;
mp[{v,u}] = w;
}
ll getCountUtil(int node, bool visited[]){
visited[node]=true;
for(auto i: adj[node]){
if(!visited[i]){
count[node] += getCountUtil(i,visited);
}
}
return count[node];
}
void getCount(){
memset(visited,false,sizeof(visited));
for(int i=1;i<n;i++){
if(!visited[i]){
count[i] = getCountUtil(i,visited);
}
}
}
ll getAnsUtil(int node, bool visited[]){
visited[node]=true;
ll sum=0;
for(auto i: adj[node]){
if(!visited[i]){
sum = sum + min(count[i],n-count[i]-1)*mp[{node,i}]*2 + getAnsUtil(i,visited);
}
}
return sum;
}
ll getAns(){
memset(visited,false,sizeof(visited));
ll ans = 0;
for(int i=1;i<n;i++){
if(!visited[i]){
ans += getAnsUtil(i,visited);
}
}
return ans;
}
};
int main()
{
fastIO
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int t;
cin>>t;
for(int j=0;j<t;j++){
int n;
cin>>n;
Graph G(n+1);
for(int i=0;i<n-1;i++){
int a,b,c;
cin>>a>>b>>c;
G.addEdge(a,b,c);
}
G.getCount();
cout<<"Case #"<<j+1<<": "<<G.getAns()<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgZmFzdElPIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CiNkZWZpbmUgcG9pbnQobikgZml4ZWQ8PHNldHByZWNpc2lvbihuKQojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIG1lbShhLHZhbCkgbWVtc2V0KGEsdmFsLHNpemVvZihhKSkKI2RlZmluZSBwYiBwdXNoX2JhY2sgCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKI2RlZmluZSBNT0QgMTAwMDAwMDAwMAoKc3RydWN0IHBhaXJfaGFzaCB7CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgc2l6ZV90IG9wZXJhdG9yICgpIChjb25zdCBwYWlyPFQxLFQyPiAmcCkgY29uc3QgewogICAgICAgIGF1dG8gaDEgPSBoYXNoPFQxPnt9KHAuZmlyc3QpOwogICAgICAgIGF1dG8gaDIgPSBoYXNoPFQyPnt9KHAuc2Vjb25kKTsKICAgICAgICByZXR1cm4gaDEgXiBoMjsgIAogICAgfQp9OwoKY2xhc3MgR3JhcGh7CiAgICBwdWJsaWM6CiAgICAgICAgaW50IG47CiAgICAgICAgbGlzdDxpbnQ+ICphZGo7CiAgICAgICAgdW5vcmRlcmVkX21hcDxwYWlyPGludCxpbnQ+LGludCxwYWlyX2hhc2g+IG1wOwogICAgICAgIHZlY3RvcjxsbD4gY291bnQ7CiAgICAgICAgYm9vbCB2aXNpdGVkWzEwMDAwMV07CiAgICAgICAgR3JhcGgoaW50IG4pewogICAgICAgICAgICB0aGlzLT5uPW47CiAgICAgICAgICAgIGFkaiA9IG5ldyBsaXN0PGludD5bbl07CiAgICAgICAgICAgIGNvdW50LnJlc2l6ZShuLDEpOwogICAgICAgIH0KICAgICAgICB2b2lkIGFkZEVkZ2UoaW50IHUsIGludCB2LCBpbnQgdyl7CiAgICAgICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7CiAgICAgICAgICAgIG1wW3t1LHZ9XSA9IHc7CiAgICAgICAgICAgIG1wW3t2LHV9XSA9IHc7CiAgICAgICAgfQogICAgICAgIGxsIGdldENvdW50VXRpbChpbnQgbm9kZSwgYm9vbCB2aXNpdGVkW10pewogICAgICAgICAgICB2aXNpdGVkW25vZGVdPXRydWU7CiAgICAgICAgICAgIGZvcihhdXRvIGk6IGFkaltub2RlXSl7CiAgICAgICAgICAgICAgICBpZighdmlzaXRlZFtpXSl7CiAgICAgICAgICAgICAgICAgICAgY291bnRbbm9kZV0gKz0gZ2V0Q291bnRVdGlsKGksdmlzaXRlZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGNvdW50W25vZGVdOwogICAgICAgIH0KICAgICAgICB2b2lkIGdldENvdW50KCl7CiAgICAgICAgICAgIG1lbXNldCh2aXNpdGVkLGZhbHNlLHNpemVvZih2aXNpdGVkKSk7CiAgICAgICAgICAgIGZvcihpbnQgaT0xO2k8bjtpKyspewogICAgICAgICAgICAgICAgaWYoIXZpc2l0ZWRbaV0pewogICAgICAgICAgICAgICAgICAgIGNvdW50W2ldID0gZ2V0Q291bnRVdGlsKGksdmlzaXRlZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGwgZ2V0QW5zVXRpbChpbnQgbm9kZSwgYm9vbCB2aXNpdGVkW10pewogICAgICAgICAgICB2aXNpdGVkW25vZGVdPXRydWU7CiAgICAgICAgICAgIGxsIHN1bT0wOwogICAgICAgICAgICBmb3IoYXV0byBpOiBhZGpbbm9kZV0pewogICAgICAgICAgICAgICAgaWYoIXZpc2l0ZWRbaV0pewogICAgICAgICAgICAgICAgICAgIHN1bSA9IHN1bSArIG1pbihjb3VudFtpXSxuLWNvdW50W2ldLTEpKm1wW3tub2RlLGl9XSoyICsgZ2V0QW5zVXRpbChpLHZpc2l0ZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdW07CiAgICAgICAgfQogICAgICAgIGxsIGdldEFucygpewogICAgICAgICAgICBtZW1zZXQodmlzaXRlZCxmYWxzZSxzaXplb2YodmlzaXRlZCkpOwogICAgICAgICAgICBsbCBhbnMgPSAwOyAKICAgICAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgICAgICAgICBpZighdmlzaXRlZFtpXSl7CiAgICAgICAgICAgICAgICAgICAgYW5zICs9IGdldEFuc1V0aWwoaSx2aXNpdGVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYW5zOwogICAgICAgIH0KfTsKCmludCBtYWluKCkKewogICAgZmFzdElPCiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgICNlbmRpZgogICAgaW50IHQ7CiAgICBjaW4+PnQ7CiAgICBmb3IoaW50IGo9MDtqPHQ7aisrKXsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4+Pm47CiAgICAgICAgR3JhcGggRyhuKzEpOwogICAgICAgIGZvcihpbnQgaT0wO2k8bi0xO2krKyl7CiAgICAgICAgICAgIGludCBhLGIsYzsKICAgICAgICAgICAgY2luPj5hPj5iPj5jOwogICAgICAgICAgICBHLmFkZEVkZ2UoYSxiLGMpOwogICAgICAgIH0KICAgICAgICBHLmdldENvdW50KCk7CiAgICAgICAgY291dDw8IkNhc2UgIyI8PGorMTw8IjogIjw8Ry5nZXRBbnMoKTw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9