#include<stdio.h>
#include<algorithm>
using namespace std;
int UF[100];
pair<int,pair<int,int> > edge[10000];
int FIND(int a){
	if(UF[a]<0)return a;
	return UF[a]=FIND(UF[a]);
}
void UNION(int a,int b){
	a=FIND(a);
	b=FIND(b);
	if(a!=b){
		if(UF[a]<UF[b]){
			int val=a;
			a=b;
			b=val;
		}
		UF[b]+=UF[a];
		UF[a]=b;
	}
	return;
}
int main(){
	int a,b;
	while(scanf("%d%d",&a,&b),a){
		for(int i=0;i<a;i++)UF[i]=-1;
		for(int i=0;i<b;i++){
			int c,d,e;
			scanf("%d%d%d",&c,&d,&e);
			edge[i]=make_pair(e,make_pair(c,d));
		}
		std::sort(edge,edge+b);
		int ret=0;
		for(int i=0;i<b;i++){
			if(FIND(edge[i].second.first)!=FIND(edge[i].second.second)){
				ret+=edge[i].first;
				UNION(edge[i].second.first,edge[i].second.second);
			}
		}
		printf("%d\n",ret);
	}
}