#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

#define INF (1 << 30)
#define MAX_V 100

int cost[MAX_V][MAX_V]; // cost[u][v] ?????????u??????v???????????????
int mincost[MAX_V];
bool used[MAX_V];
int V;// V???????????°

// ????°???¨?????¨??§?????????O(V^2)

// ???????????????????????????????????????cost????¨?????????????????????¨

int prim(){
	
	for(int i = 0; i < V; i++){
		mincost[i] = INF;
		used[i] = false;
	}
	
	mincost[0] = 0;
	
	int total = 0;
	
	while(true){
		
		int add_v = -1;
		
		for(int u = 0; u < V; u++){
			if(!used[u] && (add_v == -1 || mincost[u] < mincost[add_v])){
				add_v = u;
			}
		} // ??????????????????????±????
		
		if(add_v == -1){
			break;
		} // ??´??°???????????????????????´????????????
		used[add_v] = true;
		total += mincost[add_v];
		
		for(int u = 0; u < V; u++){
			mincost[u] = min(mincost[u], cost[add_v][u]);
		} // ???????????????????????????????°???????????????´??°
	}
	return total;
}

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