/* Author:- Mayank Pratap Singh
2nd year, MNNIT
*/
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define MOD 1000000007
typedef long long ll;
typedef long double ld;
const int INF=(int)(1e9);
const ll INF64=(ll)(1e18);
const ld EPS=1e-9;
const ld PI=3.1415926535897932384626433832795;
const int N=100005;
vector<list<pair<int,int> > >adjList(N+1);
vector<list<pair<int,int> > >spanning_tree(N+1);
list<pair<int,int> >::iterator it;
int parent[N+1];
int level[N+1];
int visited[N+1];
int n,m;
priority_queue<pair<int,pair<int,int> >,vector<pair<int,pair<int,int> > >,greater<pair<int,pair<int,int> > > >pq;
void prims(int start){
int count=0,u=start;
for(int i=1;i<=n;++i)
visited[i]=0;
while(count<n){
it=adjList[u].begin();
++count;
visited[u]=1;
while(it!=adjList[u].end()){ // Adding edges to priority queue
int v=it->ff;
int w=it->ss;
pq.push(mp(w,mp(u,v)));
++it;
}
while(!pq.empty()){
int w=pq.top().ff;
int v1=pq.top().ss.ff;
int v2=pq.top().ss.ss;
pq.pop();
if(visited[v2]==1)
continue;
else{
spanning_tree[v1].pb(mp(v2,w)); // Pushing edge to spanning tree
u=v2; // Go to terminal vertex of edge
break;
} // else
} // close to pq.empty()
} // close to while(count<n)
}
int main(){
int v1,v2,w;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i){
scanf("%d %d %d",&v1,&v2,&w);
adjList[v1].pb(mp(v2,w));
adjList[v2].pb(mp(v1,w));
}
prims(1); // We can start from any vertex
printf("Printing Spanning Tree\n");
for(int i=1;i<=n;++i){
it=spanning_tree[i].begin();
// printf("Hello\n");
while(it!=spanning_tree[i].end()){
printf("%d %d %d\n",i,it->ff,it->ss);
++it;
}
}
return 0;
}
LyogQXV0aG9yOi0gTWF5YW5rIFByYXRhcCBTaW5naAoKICAgMm5kIHllYXIsIE1OTklUCiAgIAoqLyAgIAojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKCmNvbnN0IGludCBJTkY9KGludCkoMWU5KTsKY29uc3QgbGwgSU5GNjQ9KGxsKSgxZTE4KTsKY29uc3QgbGQgRVBTPTFlLTk7CmNvbnN0IGxkIFBJPTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTsKCmNvbnN0IGludCBOPTEwMDAwNTsKCnZlY3RvcjxsaXN0PHBhaXI8aW50LGludD4gPiA+YWRqTGlzdChOKzEpOwp2ZWN0b3I8bGlzdDxwYWlyPGludCxpbnQ+ID4gPnNwYW5uaW5nX3RyZWUoTisxKTsKbGlzdDxwYWlyPGludCxpbnQ+ID46Oml0ZXJhdG9yIGl0OwppbnQgcGFyZW50W04rMV07CmludCBsZXZlbFtOKzFdOwppbnQgdmlzaXRlZFtOKzFdOwppbnQgbixtOwoKcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQscGFpcjxpbnQsaW50PiA+LHZlY3RvcjxwYWlyPGludCxwYWlyPGludCxpbnQ+ID4gPixncmVhdGVyPHBhaXI8aW50LHBhaXI8aW50LGludD4gPiA+ID5wcTsKCnZvaWQgcHJpbXMoaW50IHN0YXJ0KXsKCiAgICBpbnQgY291bnQ9MCx1PXN0YXJ0OwoKICAgIGZvcihpbnQgaT0xO2k8PW47KytpKQogICAgCXZpc2l0ZWRbaV09MDsKCiAgICB3aGlsZShjb3VudDxuKXsKCiAgICAgICAgaXQ9YWRqTGlzdFt1XS5iZWdpbigpOwoKICAgICAgICArK2NvdW50OwoKICAgICAgICB2aXNpdGVkW3VdPTE7CgogICAgICAgIHdoaWxlKGl0IT1hZGpMaXN0W3VdLmVuZCgpKXsgIC8vIEFkZGluZyBlZGdlcyB0byBwcmlvcml0eSBxdWV1ZQoKICAgICAgICAgICAgaW50IHY9aXQtPmZmOwogICAgICAgICAgICBpbnQgdz1pdC0+c3M7CiAgICAgICAgICAgIHBxLnB1c2gobXAodyxtcCh1LHYpKSk7CiAgICAgICAgICAgICsraXQ7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSghcHEuZW1wdHkoKSl7CgogICAgICAgICAgICAgaW50IHc9cHEudG9wKCkuZmY7CiAgICAgICAgICAgICBpbnQgdjE9cHEudG9wKCkuc3MuZmY7CiAgICAgICAgICAgICBpbnQgdjI9cHEudG9wKCkuc3Muc3M7CgogICAgICAgICAgICAgcHEucG9wKCk7CgogICAgICAgICAgICAgaWYodmlzaXRlZFt2Ml09PTEpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgICAgICBlbHNlewogCiAgICAgICAgICAgICAgICBzcGFubmluZ190cmVlW3YxXS5wYihtcCh2Mix3KSk7ICAgIC8vIFB1c2hpbmcgZWRnZSB0byBzcGFubmluZyB0cmVlICAKICAgICAgICAgICAgICAgIHU9djI7ICAgLy8gR28gdG8gdGVybWluYWwgdmVydGV4IG9mIGVkZ2UKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgIH0gIC8vIGVsc2UKICAgICAgICB9ICAgLy8gY2xvc2UgdG8gcHEuZW1wdHkoKQoKICAgIH0gIC8vIGNsb3NlIHRvIHdoaWxlKGNvdW50PG4pCgp9CgppbnQgbWFpbigpewoKICAgIGludCB2MSx2Mix3OwoKICAgIHNjYW5mKCIlZCAlZCIsJm4sJm0pOwoKICAgIGZvcihpbnQgaT0xO2k8PW07KytpKXsKIAogICAgICAgIHNjYW5mKCIlZCAlZCAlZCIsJnYxLCZ2Miwmdyk7CiAgICAgICAgYWRqTGlzdFt2MV0ucGIobXAodjIsdykpOwogICAgICAgIGFkakxpc3RbdjJdLnBiKG1wKHYxLHcpKTsKICAgIH0KCiAgICBwcmltcygxKTsgIC8vIFdlIGNhbiBzdGFydCBmcm9tIGFueSB2ZXJ0ZXgKCiAgICBwcmludGYoIlByaW50aW5nIFNwYW5uaW5nIFRyZWVcbiIpOwogCiAgICBmb3IoaW50IGk9MTtpPD1uOysraSl7CgogICAgICAgIGl0PXNwYW5uaW5nX3RyZWVbaV0uYmVnaW4oKTsKCiAgICAgICAgLy8gIHByaW50ZigiSGVsbG9cbiIpOwoKICAgICAgICB3aGlsZShpdCE9c3Bhbm5pbmdfdHJlZVtpXS5lbmQoKSl7CgogICAgICAgICAgIHByaW50ZigiJWQgJWQgJWRcbiIsaSxpdC0+ZmYsaXQtPnNzKTsKCiAgICAgICAgICAgKytpdDsgICAgCgogICAgICAgIH0KCiAgICB9CgoKICAgIHJldHVybiAwOyAKCn0=