#include "crocodile.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mxN = 1e5+5;
vector <pair <int, ll>> adj[mxN];
int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
for (int i = 0; i < M; i++) {
adj[R[i][0]].emplace_back(R[i][1], L[i]);
adj[R[i][1]].emplace_back(R[i][0], L[i]);
}
priority_queue <pair <ll, int>> q;
ll dis[mxN][2];
for (auto &E : dis) E[0] = E[1] = LLONG_MAX;
for (int i = 0; i < K; i++) dis[P[i]][0] = dis[P[i]][1] = 0, q.emplace(0, P[i]);
while (q.size()) {
auto [ww, u] = q.top(); q.pop();
ww = -ww;
if (dis[u][1] != ww) continue;
for (auto [v, w] : adj[u]) {
ll nw = ww + w;
int ok = 0;
if (nw <= dis[v][0]) {
dis[v][1] = dis[v][0];
dis[v][0] = nw;
ok = 1;
} else if (nw < dis[v][1]) {
dis[v][1] = nw;
ok = 1;
}
if (ok && dis[v][1] < LLONG_MAX) q.emplace(-dis[v][1], v);
}
}
return (dis[0][1] == LLONG_MAX ? -1 : dis[0][1]);
}