#include <iostream>
#include <typeindex>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
typedef struct edge{
int x,y;
int length;
};
vector<int> num;
int find(int x){
return num[x]==x?x:find(num[x]);
}
bool cmp(edge x,edge y){
return x.length<y.length;
}
void Union(int x,int y){
num[find(x)]=y;
}
bool isOver(int n){
int ans=0;
for(int i=0;i<n;i++){
if(find(i)==i){
ans++;
}
}
if(ans==1){
return true;
}
return false;
}
int main() {
int n;
while(cin>>n){
if(n==0){
return 0;
}
for(int i=0;i<=n;i++){
num.push_back(i);
}
edge side[n*(n-1)/2];
for(int i=0;i<n*(n-1)/2;i++){
cin>>side[i].x>>side[i].y>>side[i].length;
}
sort(side,side+n*(n-1)/2,cmp);
int ans=0;
for(int i=0;i<n*(n-1)/2;i++){
if(find(side[i].x)!=find(side[i].y)){
ans+=side[i].length;
Union(side[i].x, side[i].y);
if(isOver(n)){
break;
}
}
}
cout<<ans<<endl;
num.clear();
}
}
// 64 位输出请用 printf("%lld")