#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
#define pb push_back
#define fi first
#define se second
#define nn '\n'
#define pi pair<ll,ll>
#define unmp unordered_map
#define uns unordered_set
ll mod = 1e9+7;
const int N = 2*1e5 + 5 ;
int bit[200000];
int n, m;
vector<pair<int, int>> adj[N];
const int INF = 1e9;
void nhap(){
    cin >> n >> m;
    for( int i = 1 ; i <= m; i++){
        int x, y , w;
        cin >> x >> y >> w;
        adj[x].push_back({y, w});
    }
}
void dijkstra(int s){
    s = 1;
    vector<ll> d(n + 1, INF);
    d[1] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>> , greater<pair<int,int>>> q;
    q.push({0, s});
    while(!q.empty()){
        pair<int, int> top = q.top(); q.pop();
        int  u = top.second;
        int kc = top.first;
        if(kc > d[u]) continue;
 
        for( auto it : adj[u]){
            int v = it.first;
            int w = it.second;
            d[v] = max(d[v], d[u] + w);
            q.push({d[v], v});
        }
    }
    for( int i =1; i<= n ;i++){
        cout << d[i] << " ";
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    nhap();
    dijkstra(1);
    return 0;
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgbm4gJ1xuJwojZGVmaW5lIHBpIHBhaXI8bGwsbGw+CiNkZWZpbmUgdW5tcCB1bm9yZGVyZWRfbWFwCiNkZWZpbmUgdW5zIHVub3JkZXJlZF9zZXQKbGwgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gMioxZTUgKyA1IDsKaW50IGJpdFsyMDAwMDBdOwppbnQgbiwgbTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhZGpbTl07CmNvbnN0IGludCBJTkYgPSAxZTk7CnZvaWQgbmhhcCgpewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciggaW50IGkgPSAxIDsgaSA8PSBtOyBpKyspewogICAgICAgIGludCB4LCB5ICwgdzsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IHc7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh7eSwgd30pOwogICAgfQp9CnZvaWQgZGlqa3N0cmEoaW50IHMpewogICAgcyA9IDE7CiAgICB2ZWN0b3I8bGw+IGQobiArIDEsIElORik7CiAgICBkWzFdID0gMDsKICAgIHByaW9yaXR5X3F1ZXVlPHBhaXI8aW50LCBpbnQ+LCB2ZWN0b3I8cGFpcjxpbnQsIGludD4+ICwgZ3JlYXRlcjxwYWlyPGludCxpbnQ+Pj4gcTsKICAgIHEucHVzaCh7MCwgc30pOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgcGFpcjxpbnQsIGludD4gdG9wID0gcS50b3AoKTsgcS5wb3AoKTsKICAgICAgICBpbnQgIHUgPSB0b3Auc2Vjb25kOwogICAgICAgIGludCBrYyA9IHRvcC5maXJzdDsKICAgICAgICBpZihrYyA+IGRbdV0pIGNvbnRpbnVlOwoKICAgICAgICBmb3IoIGF1dG8gaXQgOiBhZGpbdV0pewogICAgICAgICAgICBpbnQgdiA9IGl0LmZpcnN0OwogICAgICAgICAgICBpbnQgdyA9IGl0LnNlY29uZDsKICAgICAgICAgICAgZFt2XSA9IG1heChkW3ZdLCBkW3VdICsgdyk7CiAgICAgICAgICAgIHEucHVzaCh7ZFt2XSwgdn0pOwogICAgICAgIH0KICAgIH0KICAgIGZvciggaW50IGkgPTE7IGk8PSBuIDtpKyspewogICAgICAgIGNvdXQgPDwgZFtpXSA8PCAiICI7CiAgICB9Cn0KaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBuaGFwKCk7CiAgICBkaWprc3RyYSgxKTsKICAgIHJldHVybiAwOwp9Cg==