#include <bits/stdc++.h>
using namespace std;

#define ll long long
#include <cassert>

void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D) {
    priority_queue<pair<long long, long long>> pq;

    // pk la mia sub fa tle

    vector < vector < pair<int, int> > > G ( N );

    for(int i = 0; i < N; i ++) {
        D[i] = 1e18;
    }

    D[0] = 0;

    for(int i = 0; i < M; i++) {
        G[X[i]].push_back({Y[i], P[i]});
    }

    pq.emplace(0, 0);

    while(!pq.empty()) {
        auto [d, v] = pq.top();
        pq.pop();

        for(auto [u, w]: G[v]) {
            if(D[u] > -d + w) {
                D[u] = - d + w;
                pq.emplace(-D[u], u);
            }
        }
    }

    for(auto &i: D) if(i >= 1e17) i = -1;
}


#ifndef EVAL
int main() {
    int N, M;
    cin >> N >> M;

    vector<int> X(M), Y(M), P(M);
    vector<long long> D(N);

    for (int i = 0; i < M; i++) {
        cin >> X[i] >> Y[i] >> P[i];
    }

    mincammino(N, M, X, Y, P, D);


}
#endif