#include <iostream>
#include <set>
#include <algorithm>

using namespace std;

int n, m;
vector< set< pair<int, int> > > cost(100,set< pair<int,int> >());

int prim()
{
	int e[100]={};
	int res=0;
	set<int> v;
	v.insert(0);
	while(v.size()<n)
	{
		for(set<int>::iterator it=v.begin();it!=v.end();it++)
		{
			for(set<  pair<int, int> >::iterator it2=cost[*it].begin();it2!=cost[*it].end();it2++)
				if(v.find((*it2).second)==v.end())
				{
					v.insert((*it2).second);
					res+=(*it2).first;
					break;
				}
		}
	}
	return res;
}

int main()
{
	while(1)
	{
		cin >> n >> m;
		if(n==0&&m==0) break;
		for(int i=0;i<m;i++)
		{
			int a, b, c;
			cin >> a >> b >> c;
			cost[a].insert(pair<int, int>(c, b));
			cost[b].insert(pair<int, int>(c, a));
		}
		cout << prim() << endl;
		for(int i=0;i<m;i++)
			cost[i].clear();
	}
	return 0;
}