#include<bits/stdc++.h>
using namespace std;
int main(void){
int n,m,u,v,w;
list<pair<int, int> > adj[100];
cin>>n>>m;
for(int i=0; i<m; i++){
cin>>u>>v>>w;
adj[u].push_back(make_pair(v,w));
adj[v].push_back(make_pair(u,w));
}
bool inMst[n];
int keys[n],parent[n];
for(int i=0; i<n; i++){
inMst[i]=false;
keys[i]=INT_MAX;
parent[i]=-1;
}
priority_queue<pair<int, int> , vector<pair<int, int> >, greater<pair<int, int> > >pq;
int src=0;
pq.push(make_pair(0,src));
keys[src]=0;
while(!pq.empty()){
int U = pq.top().second;
pq.pop();
inMst[U]=true;
for(auto it=adj[U].begin(); it!=adj[U].end(); it++){
int V = it->first;
int weight = it->second;
if(inMst[V]==false && keys[V]>weight){
keys[V]=weight;
pq.push(make_pair(keys[V],V));
parent[V]=U;
}
}
}
for(int i=1; i<n; i++){
cout<<parent[i]<<" "<<i<<" "<<keys[i]<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4odm9pZCl7CglpbnQgbixtLHUsdix3OwoJbGlzdDxwYWlyPGludCwgaW50PiA+IGFkalsxMDBdOwoJY2luPj5uPj5tOwoJZm9yKGludCBpPTA7IGk8bTsgaSsrKXsKCQljaW4+PnU+PnY+Pnc7CgkJYWRqW3VdLnB1c2hfYmFjayhtYWtlX3BhaXIodix3KSk7CgkJYWRqW3ZdLnB1c2hfYmFjayhtYWtlX3BhaXIodSx3KSk7Cgl9Cglib29sIGluTXN0W25dOwoJaW50IGtleXNbbl0scGFyZW50W25dOwoJZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKCQlpbk1zdFtpXT1mYWxzZTsKCQlrZXlzW2ldPUlOVF9NQVg7CgkJcGFyZW50W2ldPS0xOwoJfQoJcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsIGludD4gLCB2ZWN0b3I8cGFpcjxpbnQsIGludD4gPiwgZ3JlYXRlcjxwYWlyPGludCwgaW50PiA+ID5wcTsKCWludCBzcmM9MDsKCXBxLnB1c2gobWFrZV9wYWlyKDAsc3JjKSk7CglrZXlzW3NyY109MDsKCXdoaWxlKCFwcS5lbXB0eSgpKXsKCQlpbnQgVSA9IHBxLnRvcCgpLnNlY29uZDsKCQlwcS5wb3AoKTsKCQlpbk1zdFtVXT10cnVlOwoJCWZvcihhdXRvIGl0PWFkaltVXS5iZWdpbigpOyBpdCE9YWRqW1VdLmVuZCgpOyBpdCsrKXsKCQkJaW50IFYgPSBpdC0+Zmlyc3Q7CgkJCWludCB3ZWlnaHQgPSBpdC0+c2Vjb25kOwoJCQlpZihpbk1zdFtWXT09ZmFsc2UgJiYga2V5c1tWXT53ZWlnaHQpewoJCQkJa2V5c1tWXT13ZWlnaHQ7CgkJCQlwcS5wdXNoKG1ha2VfcGFpcihrZXlzW1ZdLFYpKTsKCQkJCXBhcmVudFtWXT1VOwoJCQl9CgkJfQoJfQoJZm9yKGludCBpPTE7IGk8bjsgaSsrKXsKCQljb3V0PDxwYXJlbnRbaV08PCIgIjw8aTw8IiAiPDxrZXlzW2ldPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=