#include<iostream>
 
using namespace std;

#define MAXV 100
#define INF 100000000

int cost[MAXV][MAXV];
int mincost[MAXV];
bool used[MAXV];
int V;

int prim(){
	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 m;
	int a,b,cot;

	while(1){
		 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;
			   }
		   }

		   for(int i=0;i<m;i++){
			   cin>>a>>b>>cot;
			   cost[a][b]=cot;
			   cost[b][a]=cot;
		   }

		   cout<<prim()<<endl;
	  }

	 return 0;
}