#include "crocodile.h"
#include <bits/stdc++.h>
#define a2 array <int,2>
using namespace std;
const int INF=1e9+7;
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[])
{
vector <a2> d(N+5,{INF,INF});
vector <vector <a2>> adj(N+5);
priority_queue <a2,vector <a2>,greater <a2>> pq;
for(int i=0;i<M;i++){
adj[R[i][0]].push_back({R[i][1],L[i]});
adj[R[i][1]].push_back({R[i][0],L[i]});
}
for(int i=0;i<K;i++){
d[P[i]]={0,0};
pq.push({0,P[i]});
}
while(!pq.empty()){
auto [d_u,u]=pq.top();
pq.pop();
if(d_u>d[u][1]) continue;
for(auto [v,w]:adj[u]){
if(d_u+w<d[v][0]){
if(d[v][0]<d[v][1]) pq.push({d[v][0],v});
d[v][1]=d[v][0];
d[v][0]=d_u+w;
}
else if(d_u+w<d[v][1]) pq.push({d[v][1]=d_u+w,v});
}
}
return d[0][1];
}