#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
#define int long long int
int n, m;
vector<vector<pair<int,int>>> g;
vector<int> dist;
const int MAXD = 1e17;
void dijkstra()
{
for(int i = 0; i <= n; ++i)
{
dist[i] = MAXD;
}
priority_queue<pair<int,int>,
vector<pair<int,int>>,
greater<pair<int,int>> > pq;
dist[1] = 0;
pq.push({0,1});
while(!pq.empty())
{
int u = pq.top().second;
int d = pq.top().first;
pq.pop();
if(dist[u] < d) continue;
for(auto e: g[u])
{
int v = e.first;
int c = e.second;
if(dist[v] <= c+d) continue;
else
{
dist[v] = c+d;
pq.push({dist[v], v});
}
}
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
g.resize(n+1);
dist.resize(n+1);
for(auto i = 0; i < m; ++i)
{
int u, v, c;
cin >> u >> v >> c;
g[u].push_back({v,c});
}
dijkstra();
for(int i = 1; i <=n; ++i )
{
cout << dist[i] << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCAiXG4iCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKaW50IG4sIG07CnZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsaW50Pj4+IGc7CnZlY3RvcjxpbnQ+IGRpc3Q7CmNvbnN0IGludCBNQVhEID0gMWUxNzsKCnZvaWQgZGlqa3N0cmEoKQp7Cglmb3IoaW50IGkgPSAwOyBpIDw9IG47ICsraSkKCXsKCQlkaXN0W2ldID0gTUFYRDsKCX0KCglwcmlvcml0eV9xdWV1ZTxwYWlyPGludCxpbnQ+LCAKCXZlY3RvcjxwYWlyPGludCxpbnQ+PiwgCglncmVhdGVyPHBhaXI8aW50LGludD4+ID4gcHE7CglkaXN0WzFdID0gMDsKCXBxLnB1c2goezAsMX0pOwoJd2hpbGUoIXBxLmVtcHR5KCkpCgl7CgkJaW50IHUgPSBwcS50b3AoKS5zZWNvbmQ7CgkJaW50IGQgPSBwcS50b3AoKS5maXJzdDsKCQlwcS5wb3AoKTsKCQlpZihkaXN0W3VdIDwgZCkgY29udGludWU7CgkJZm9yKGF1dG8gZTogZ1t1XSkKCQl7CgkJCWludCB2ID0gZS5maXJzdDsKCQkJaW50IGMgPSBlLnNlY29uZDsKCQkJaWYoZGlzdFt2XSA8PSBjK2QpIGNvbnRpbnVlOwoJCQllbHNlCgkJCXsKCQkJCWRpc3Rbdl0gPSBjK2Q7CgkJCQlwcS5wdXNoKHtkaXN0W3ZdLCB2fSk7CgkJCX0KCgkJfQoJfQoKfQoKaW50MzJfdCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOwoJY2luID4+IG4gPj4gbTsKCWcucmVzaXplKG4rMSk7CglkaXN0LnJlc2l6ZShuKzEpOwoJZm9yKGF1dG8gaSA9IDA7IGkgPCBtOyArK2kpCgl7CgkJaW50IHUsIHYsIGM7CgkJY2luID4+IHUgPj4gdiA+PiBjOwoJCWdbdV0ucHVzaF9iYWNrKHt2LGN9KTsKCX0KCWRpamtzdHJhKCk7Cglmb3IoaW50IGkgPSAxOyBpIDw9bjsgKytpICkKCXsKCQljb3V0IDw8IGRpc3RbaV0gPDwgIiAiOwoJfQp9