#include<bits/stdc++.h>
using namespace std;
int n,m,j,k,w;
struct node{
int to; //顶点序号
int w; //权值
};
vector<node>v[100010];
int main()
{
node e;
scanf("%d%d",&n,&m); //m条边
for(int i=0;i<m;i++){
scanf("%d%d%d",&j,&k,&w);
e.to=k;
e.w=w;
v[j].push_back(e);
e.to=j; //无向图时有,有向图时省去以下两行
v[k].push_back(e);
}
for(int i=1;i<=n;i++){
for(vector<node>::iterator k=v[i].begin();k!=v[i].end();k++){
node t=*k;
printf("%d %d %d\n",i,t.to,t.w);
}
}
}