#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,M; cin >> N >> M; vector P(N); for(auto &p : P) cin >> p; long long inf = 1e16; vector>> Graph(N); for(int i=0; i> u >> v; u--; v--; int w; cin >> w; Graph.at(u).push_back({v,w}); } vector X(N); X.at(0) = 0; for(int t=0; t<=N; t++) for(int pos=0; pos dist(N,inf); dist.at(i) = 0; priority_queue,vector>,greater<>> Q; Q.push({0,i}); while(Q.size()){ auto [d,pos] = Q.top(); Q.pop(); if(dist.at(pos) != d) continue; for(auto [to,w] : Graph.at(pos)){ if(d+w+X.at(pos)-X.at(to) < dist.at(to)) dist.at(to) = d+w+X.at(pos)-X.at(to),Q.push({dist.at(to),to}); } } for(int k=0; k