#include<bits/stdc++.h>
using namespace std;


void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D)
{
	vector<vector<pair<int,long long>>> adj(N, vector<pair<int,long long>>(N));
	for(int i = 0; i < M; i++)
	{
		adj[X[i]].push_back({Y[i], P[i]});
	}
	fill(D.begin(), D.end(), -1);
	pair<long long, int> p = {0, 0};
	priority_queue <pair<long long, int>> q;
	q.push(p);
	while(!q.empty())
	{
		p = q.top();
		q.pop();
		p.first *= -1;
		if(D[p.second] == -1)
		{
			D[p.second] = p.first;
			for(auto x : adj[p.second])
			{
				if(D[x.first] == -1) q.push({-(p.first + x.second), x.first});
			}
		}	
	}

}




/*
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);

    for (int i = 0; i < N; i++) {
        cout << D[i] << ' ';
    }
    cout << '\n';
}
*/