#include<bits/stdc++.h>
#define maxn 10000010
using namespace std;
const int inf=11451419;
int n,m,cnt1;
int cnt[maxn],num[maxn],dis[maxn],nex[maxn],to[maxn],head[maxn];
bool vis[maxn];
void add(int x,int y,int z){
to[++cnt1]=y;
nex[cnt1]=head[x];
head[x]=cnt1;
num[cnt1]=z;
}
queue<int >q;
bool spfa(){
q.push(0);
num[0]=0;
vis[0]=1;
cnt[0]=1;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i;i=nex[i]){
int v=to[i];
if(num[v]>=(long long )num[u]+dis[i]){
num[v]=num[u]+dis[i];
if(!vis[v]){
vis[v]=1;
q.push(v);
cnt[v]++;
if(cnt[v]>n+114514)return 1;
}
}
}
}
return 0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
num[i]=inf;
}
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
add(v,u,w);
}
for(int i=1;i<=n;i++)
add(0,i,0);
if(!spfa()){
for(int i=1;i<=n;i++)
cout<<num[i]<<" ";
}
else cout<<"NO";
return 0;
}