#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
using namespace std;
typedef long long ll;
struct node
{
int v;
int len;
};
bool vis[100010];
vector<node> mp[100010];
int n, m, x, y, z, tot[100010], dis[100010];
bool SPFA(int strt)
{
queue<int> q;
for(int i = 0; i <= n; i ++) dis[i] = -1e9;
dis[strt] = 0, vis[strt] = true;
tot[strt] = 1;
q.push(strt);
while(q.size())
{
int u = q.front();
vis[u] = false;
q.pop();
for(int i = 0; i < mp[u].size(); i ++)
{
int v = mp[u][i].v, val = mp[u][i].len;
if(dis[v] < dis[u] + val)
{
dis[v] = dis[u] + val;
if(!vis[v])
{
vis[v] = true;
q.push(v);
tot[v] ++;
if(tot[v] > n + 1) return false;
}
}
}
}
return true;
}
int main()
{
IOS;
cin >> n >> m;
for(int i = 1; i <= n; i ++) mp[0].push_back({i, 0});
for(int i = 0; i < m; i ++) cin >> x >> y >> z, mp[x].push_back({y, -z});
if(!SPFA(0)) cout << "No";
else for(int i = 1; i <= n; i ++) cout << dis[i] << " ";
return 0;
}