#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
using ll = long long;
const ll oo = 4e18;
void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D) {
	vector<vector<pair<int, int>>>adj(N);
	for(int i = 0; i < M; i++){
		adj[X[i]].push_back({P[i], Y[i]});
	//	adj[Y[i]].push_back({P[i], X[i]});
	}
	D.resize(N, oo);
	dist[0] = 0;
	priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>>pq;
	pq.push({0, 0});
	while(!pq.empty()){
		auto [d, n] = pq.top(); pq.pop();
		for(auto [sd, sn] : adj[n]){
			ll nw = D[n] + sd;
			if(D[sn] > nw){
				dist[sn] = nw;
				pq.push({D[n], sn});
			}
		}
	}
	
	for(auto& i : D) if(i == oo) i = -1;
}
//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';
//}
