//kruskal tree
#include <iostream>
#include <algorithm>
using namespace std;
#define M 101
int parent[M],a[M],b[M];
pair<int,int>node[M];
int root(int a){
	if(parent[a]==a)return a;
	return parent[a]=root(parent[a]);
}
int unite(int a,int b){
	if(root(a)!=root(b))return 0;
	parent[root(a)]=root(b);
	return 1;
}
int main(){
	int i,s,n,m;
	for(;cin>>n>>m,n;cout<<s<<endl){
		for(i=0;i<m;i++)cin>>a[i]>>b[i]>>node[i].first,node[i].second=i;
		sort(node,node+m);
		for(i=0;i<n;i++)parent[i]=i;
		for(s=i=0;i<m;i++)if(unite(a[node[i].second],b[node[i].second]))s+=node[i].first;
	}
}