//感谢师哥指导
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m;
int x,y;
int ans;
int abw;
int sum;
int a[10000+5];
struct stu
{
int z;
int w;
int g;
};
stu p[10000+5];
int cmp(stu a,stu b)
{
return a.g<b.g;
}//运用于sort的结构体排序函数
int text()
{
for(int i=1;i<=n;i++)
{
a[i]=i;
}
return 0;
}
int getf(int v)
{
if(a[v]==v)
{
return v;
}
else
{
a[v]=getf(a[v]);
return a[v];
}
}
int merg(int v,int u)
{
int t1,t2;
t1=getf(v);
t2=getf(u);
if(t1!=t2)
{
a[t2]=t1;
return 1;
}
return 0;
}
int main()
{
memset(p,0,sizeof(p));//将结构体内部元素全部清零
/*for(int i=0;i<10;i++)
{
cout<<p[i].z<<' '<<p[i].w<<endl;
}*/
while(scanf("%d",&n)&&n)
{
abw=0;
sum=0;
text();
ans=n*(n-1)/2;
for(int i=0;i<ans;i++)
{
scanf("%d%d%d",&p[i].z,&p[i].w,&p[i].g);
}
stable_sort(p,p+ans,cmp);//进行排列,便于从最小节点开始
for(int i=0;i<ans;i++)
{
if(merg(p[i].z,p[i].w))
{
sum+=p[i].g;
abw++;
}//依次讨论是否在同一集合,如果不是则增加sum
if(abw==n)break;//判断是否达到数据要求
}
PRintf("%d\n",sum);
}
return 0;
}