#include <iostream>
#define INF 1000000
#define MAX 101

using namespace std;
int cost[MAX][MAX];
int mincost[MAX];
bool used[MAX];
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;
  while( cin >> V >> m ,V+m){
  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++ ){
    int a,b,c;
    cin >> a >> b >> c;
    cost[a][b] = cost[b][a] = c;
  }
  cout << prim() << endl;
  }
  return 0;
}