#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,dis[5005],a[5005],b[5005],c[5005];
bool bf(){
memset(dis,0x3f,sizeof(dis));
dis[1]=0;
for(int i=1;i<n;i++){
for(int j=1;j<=m;j++){
dis[b[j]]=min(dis[b[j]],dis[a[j]]+c[j]);
}
}
for(int i=1;i<=m;i++){
if(dis[b[i]]>dis[a[i]]+c[i]){
return 0;
}
}
return 1;
}
int main(){
memset(c,0x3f,sizeof(c));
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
a[i]=u;
b[i]=v;
c[i]=min(c[i],w);
}
if(bf()==0){
cout<<"NO\n";
return 0;
}
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
cout<<"\n";
return 0;
}