#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
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({Y[i],P[i]});

   for(auto &i:D)i=LLONG_MAX;
   D[0]=0LL;
   priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>>pq;
   pq.emplace(0,0);
   while(!pq.empty())
   {
        auto [dist,i]=pq.top(); pq.pop();
        if(D[i]!=dist)continue;
        for(auto [j,w]:adj[i])
        {
            if(D[j]>D[i]+w)
            {
                D[j]=D[i]+w;
                pq.emplace(D[j],j);
            }
        }
   }
   for(int i=0;i<N;i++)
   {
    if(D[i]==LLONG_MAX)D[i]=-1;
   }
}