#include <stdio.h>
#include <string.h>
#define N 101
#define INF 0x7ffffff
int map[N][N];
bool mark[N];
int path[N];//mark过点集合到未mark过点i的最短距离
int n;
int Min (int a,int b)
{
return a<b? a:b;
}
int prim()
{
int i,v,min,j,sum=0;
memset(mark,0,sizeof(mark));
mark[1]=1;//先mark一个点
for (i=1;i<=n;i++) path[i]=map[1][i];//初始距离
for (i=2;i<=n;i++)//剩下n-1个点
{
v=2;
while(mark[v]) v++;//每次先找一个未mark点
min=path[v];
for (j=v+1;j<=n;j++)//找出最小值
{
if (!mark[j] && path[j]<min)
{
min=path[j];
v=j;
}
}
if (min==INF) return -1;//有一个点没有路
sum+=min;
mark[v]=1;
for (j=1;j<=n;j++)//用新加入的点v修改path
{
if (!mark[j])
{
path[j]=Min(path[j],map[v][j]);
}
}
}
return sum;
}
int main ()
{
//freopen("1233.txt","r",stdin);
int i,j,t,u,v,d;
while(scanf("%d",&n),n)
{
t=n*(n-1)/2;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++) map[i][j]=INF;
}
while(t--)
{
scanf("%d%d%d",&u,&v,&d);
map[u][v]=map[v][u]=d;
}
printf("%d\n",prim());
}
}