/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>
typedef long long LL;
using namespace std;
int n;
int cnt;
int f[105];
struct node
{
int u, v, w;
bool operator <(const node &x)const{
return w < x.w;
}
}a[100005];
int Find(int x){
return x == f[x] ? x : Find(f[x]);
}
void kruskal(){
for (int i = 1; i <= n; i++) f[i] = i;
sort(a, a + cnt);
int tot = 0;
int ans = 0;
for (int i = 0; i < cnt; i++){
int x = Find(a[i].u), y = Find(a[i].v);
if(x != y){
f[x] = y;
tot++;
ans += a[i].w;
if(tot == n - 1) break;
}
}
printf("%d\n", ans);
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
while(scanf("%d", &n) == 1){
int u, v, w;
if(n == 0) break;
cnt = 0;
for (int i = 1; i <= n * (n - 1) / 2; i++){
scanf("%d %d %d", &u, &v, &w);
a[cnt].u = u, a[cnt].v = v, a[cnt].w = w;
cnt++;
a[cnt].u = v, a[cnt].v = u, a[cnt].w = w;
cnt++;
}
kruskal();
}
return 0;
}
/**/