#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <map>
#include <sstream>
#include <queue>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <stack>
#include <list>
using namespace std;
#define INF 1000000000
typedef long long int lli;
typedef pair<int,int> P;

const int MAX_V=100;
int cost[MAX_V][MAX_V];
int mincost[MAX_V];
bool used[MAX_V];

int prim(int V){
	for(int i=0; i<V; ++i){
		mincost[i]=INF;
		used[i]=false;
	}
	mincost[0]=0;
	int res=0;
	
	while(true){
		int v=-1;
		for(int u=0; u<V; ++u){
			if(!used[u]&&(v==-1||mincost[u]<mincost[v])) v=u;
		}
		if(v==-1) break;
		used[v]=true;
		res+=mincost[v];
		for(int u=0; u<V; ++u){
			mincost[u]=min(mincost[u],cost[v][u]);
		}
	}
	return res;
}

int main(){
	int n,m;
	while(cin>>n>>m){
		if(n==0&&m==0) break;
		for(int i=0;i<n;++i)for(int j=0;j<n;++j) cost[i][j]=INF;
		for(int i=0; i<m; ++i){
			int a,b,c;
			cin >> a >> b >> c;
			cost[a][b]=cost[b][a]=c;
		}
		cout << prim(n) << "\n";
	}
	return 0;
}