#include<stdio.h>#include<stdlib.h>typedef struct{ int x,y; int w;}NODE; NODE node[3000];int pre[55];void change(int *x,int *y){ int t; t=*x; *x=*y; *y=t; } int find(int x){ while(x!=pre[x]) x=pre[x]; return x;} int kruskal(int k){ int i,j,a,b,h,sum=0; for(i=0;i<k-1;i++) { h=i; for(j=i+1;j<k;j++) if(node[h].w>node[j].w)h=j; if(h!=i) { change(&node[i].x,&node[h].x); change(&node[i].y,&node[h].y); change(&node[i].w,&node[h].w); } }for(i=0;i<k;i++){ a=find(node[i].x); b=find(node[i].y); if(a!=b) { sum+=node[i].w; pre[b]=a; } } return sum;}int main(){ int p,r,i,j; while(scanf("%d",&p)&&p) { scanf("%d",&r); for(i=0;i<=p;i++) pre[i]=i; for(i=0;i<r;i++) scanf("%d%d%d",&node[i].x,&node[i].y,&node[i].w); printf("%dn",kruskal(r)); } return 0; }