#include<iostream>
using namespace std;
const long long N=1e5+5;
const long long C=1e9;
long long n,m;
struct node{
long long u,v,o;
}a[N];
long long f[N];
void td(int i){
if(i>m){
bool pd=0;
for(int j=1;j<=m;j++)
if(min(f[a[i].u],f[a[i].v])!=a[i].o){
cout<<a[i].u<<" "<<a[i].v<<" ooo"<<endl;
pd=1;
break;
}
if(pd!=0) return;
else{
for(int j=1;j<=n;j++){
if(f[j]!=0) cout<<f[j]<<" ";
else cout<<C<<" ";
}
exit(0);
}
}
if((f[a[i].u]==0||f[a[i].u]==a[i].o)&&(f[a[i].v]==0||f[a[i].v]==a[i].o)) f[a[i].u]=a[i].o,f[a[i].v]=a[i].o,td(i+1);
else{
long long b=f[a[i].u];
f[a[i].u]=a[i].o;
td(i+1);
f[a[i].u]=b;
f[a[i].v]=a[i].o;
td(i+1);
f[a[i].u]=a[i].o;
td(i+1);
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i].u>>a[i].v>>a[i].o;
td(1);
return 0;
}