#include <bits/stdc++.h>
using namespace std;
#define ll long long
void mincammino(int N, int M, vector<int> X, vector<int> Y, vector<int> P, vector<long long>& D) {
    fill(D.begin(), D.end(), 1e18);
    vector<vector<array<ll,2>>>adj(N);
    for (int i=0;i<M;i++){
        adj[X[i]].push_back({Y[i],P[i]});
    }
    vector<bool>vis(N);
    priority_queue<array<ll,2>>q;
    q.push({0,0});
    D[0]=0;
    while(!q.empty()){
        int v=q.top()[1];
        q.pop();
        if (vis[v]) continue;
        vis[v]=1;
        for (auto [u,w]:adj[v]){
            if (D[u]>D[v]+w){
                D[u]=D[v]+w;
                q.push({-D[u],u});
            }
        }
    }
    for (int i=0;i<N;i++){
        if (D[i]==1e18) D[i]=-1;
    }
}
