#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll inf = 1e18;
int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) {
vector<vector<array<ll, 2>>> adj(n);
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]});
}
priority_queue<array<ll, 3>, vector<array<ll, 3>>, greater<>> pq;
vector<array<ll, 2>> d(n, {inf, inf});
for(int i = 0; i < k; i++) {
pq.push({0, 0, p[i]});
d[p[i]][0] = d[p[i]][1] = 0;
}
while(!pq.empty()) {
auto [d_v, d_v2, v] = pq.top();
pq.pop();
if(d[v] != array<ll, 2>{d_v, d_v2}) continue;
for(auto [to, c] : adj[v]) {
ll cost = d[v][0] + c;
if(d[to][1] > cost) {
if(d[to][0] > d[to][1]) {
d[to][0] = d[to][1];
}
d[to][1] = cost;
pq.push({d[to][0], d[to][1], to});
} else if(d[to][0] > cost) {
d[to][0] = cost;
pq.push({d[to][0], d[to][1], to});
}
}
}
return (int)d[0][0];
}