#include<stdio.h> #include<algorithm> #define max 50*99+10 using namespace std; int set[110]; struct line { int dis; int start; int end; }num[max]; bool cmp(line a,line b) { return a.dis<b.dis; } int find(int p) { int child=p; int t; while(p!=set[p]) p=set[p]; while(child!=p) { t=set[child]; set[child]=p; child=t; } return p; } void merge(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) set[fx]=fy; } int main() { int city,need; int n,i,j; while(scanf("%d",&city)&&(city!=0)) { for(i=1;i<=city;i++) set[i]=i; n=city*(city-1)/2; for(i=0;i<n;i++) { scanf("%d%d%d",&num[i].start,&num[i].end,&num[i].dis); } sort(num,num+n,cmp); need=0; for(i=0;i<n;i++) { if(find(num[i].start)!=find(num[i].end)) { merge(num[i].start,num[i].end); need+=num[i].dis; } } printf("%d\n",need); } return 0; }