#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long int ll;
typedef vector<int> vi;
const int MOD = 1e9+7;
int main(){
int t;
cin >> t;
while (t--) {
int n, m, h;
cin >> n >> m >> h;
// Store horse nodes
vector<bool> hasHorse(n+1, false);
for (int i = 0; i < h; i++) {
int x;
cin >> x;
hasHorse[x] = true;
}
// Adjacency List
vector<vector<pair<int, int>>> adj(n+1);
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
// Distance Arrays
vector<vector<int>> dp(n+1, vector<int>(2, INT_MAX));
vector<vector<int>> dp2(n+1, vector<int>(2, INT_MAX));
// Visited Arrays
vector<vector<bool>> vis(n+1, vector<bool>(2, false));
// ---------------------- First Dijkstra (From 1)
priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq;
// Start with node 1
dp[1][0] = 0;
pq.push({0, 1, 0}); // {distance, node, horse_not_used}
if (hasHorse[1]) {
dp[1][1] = 0;
pq.push({0, 1, 1});
}
while (!pq.empty()) {
auto [currDist, node, state] = pq.top();
pq.pop();
if (vis[node][state]) continue;
vis[node][state] = true;
for (auto [nextNode, weight] : adj[node]) {
int newDist = currDist + (state ? weight / 2 : weight);
// Transition without horse
if (dp[nextNode][state] > newDist) {
dp[nextNode][state] = newDist;
pq.push({newDist, nextNode, state});
}
}
}
// ---------------------- Second Dijkstra (From n)
vis.assign(n+1, vector<bool>(2, false));
pq.push({0, n, 0});
dp2[n][0] = 0;
if (hasHorse[n]) {
dp2[n][1] = 0;
pq.push({0, n, 1});
}
while (!pq.empty()) {
auto [currDist, node, state] = pq.top();
pq.pop();
if (vis[node][state]) continue;
vis[node][state] = true;
for (auto [nextNode, weight] : adj[node]) {
int newDist = currDist + (state ? weight / 2 : weight);
// Transition without horse
if (dp2[nextNode][state] > newDist) {
dp2[nextNode][state] = newDist;
pq.push({newDist, nextNode, state});
}
}
}
// ---------------------- Calculate the Result
int res = INT_MAX;
for (int i = 1; i <= n; i++) {
res = min(res, max(min(dp[i][0], dp[i][1]), min(dp2[i][0], dp2[i][1])));
}
if (res == INT_MAX) cout << -1 << endl;
else cout << res << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBlbmRsICJcbiIgCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKY29uc3QgaW50IE1PRCA9IDFlOSs3OwoKaW50IG1haW4oKXsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICAKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbiwgbSwgaDsKICAgICAgICBjaW4gPj4gbiA+PiBtID4+IGg7CgogICAgICAgIC8vIFN0b3JlIGhvcnNlIG5vZGVzCiAgICAgICAgdmVjdG9yPGJvb2w+IGhhc0hvcnNlKG4rMSwgZmFsc2UpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaDsgaSsrKSB7CiAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgaGFzSG9yc2VbeF0gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRqYWNlbmN5IExpc3QKICAgICAgICB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LCBpbnQ+Pj4gYWRqKG4rMSk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICAgICAgaW50IHUsIHYsIHc7CiAgICAgICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh7diwgd30pOwogICAgICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHt1LCB3fSk7CiAgICAgICAgfQoKICAgICAgICAvLyBEaXN0YW5jZSBBcnJheXMKICAgICAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGRwKG4rMSwgdmVjdG9yPGludD4oMiwgSU5UX01BWCkpOwogICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZHAyKG4rMSwgdmVjdG9yPGludD4oMiwgSU5UX01BWCkpOwoKICAgICAgICAvLyBWaXNpdGVkIEFycmF5cwogICAgICAgIHZlY3Rvcjx2ZWN0b3I8Ym9vbD4+IHZpcyhuKzEsIHZlY3Rvcjxib29sPigyLCBmYWxzZSkpOwoKICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZpcnN0IERpamtzdHJhIChGcm9tIDEpCiAgICAgICAgcHJpb3JpdHlfcXVldWU8YXJyYXk8aW50LCAzPiwgdmVjdG9yPGFycmF5PGludCwgMz4+LCBncmVhdGVyPGFycmF5PGludCwgMz4+PiBwcTsKICAgICAgICAKICAgICAgICAvLyBTdGFydCB3aXRoIG5vZGUgMQogICAgICAgIGRwWzFdWzBdID0gMDsKICAgICAgICBwcS5wdXNoKHswLCAxLCAwfSk7ICAvLyB7ZGlzdGFuY2UsIG5vZGUsIGhvcnNlX25vdF91c2VkfQoKICAgICAgICBpZiAoaGFzSG9yc2VbMV0pIHsKICAgICAgICAgICAgZHBbMV1bMV0gPSAwOwogICAgICAgICAgICBwcS5wdXNoKHswLCAxLCAxfSk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICAgICAgYXV0byBbY3VyckRpc3QsIG5vZGUsIHN0YXRlXSA9IHBxLnRvcCgpOwogICAgICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgICAgIGlmICh2aXNbbm9kZV1bc3RhdGVdKSBjb250aW51ZTsKICAgICAgICAgICAgdmlzW25vZGVdW3N0YXRlXSA9IHRydWU7CgogICAgICAgICAgICBmb3IgKGF1dG8gW25leHROb2RlLCB3ZWlnaHRdIDogYWRqW25vZGVdKSB7CiAgICAgICAgICAgICAgICBpbnQgbmV3RGlzdCA9IGN1cnJEaXN0ICsgKHN0YXRlID8gd2VpZ2h0IC8gMiA6IHdlaWdodCk7CgogICAgICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB3aXRob3V0IGhvcnNlCiAgICAgICAgICAgICAgICBpZiAoZHBbbmV4dE5vZGVdW3N0YXRlXSA+IG5ld0Rpc3QpIHsKICAgICAgICAgICAgICAgICAgICBkcFtuZXh0Tm9kZV1bc3RhdGVdID0gbmV3RGlzdDsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtuZXdEaXN0LCBuZXh0Tm9kZSwgc3RhdGV9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZWNvbmQgRGlqa3N0cmEgKEZyb20gbikKICAgICAgICB2aXMuYXNzaWduKG4rMSwgdmVjdG9yPGJvb2w+KDIsIGZhbHNlKSk7CiAgICAgICAgcHEucHVzaCh7MCwgbiwgMH0pOwogICAgICAgIGRwMltuXVswXSA9IDA7CgogICAgICAgIGlmIChoYXNIb3JzZVtuXSkgewogICAgICAgICAgICBkcDJbbl1bMV0gPSAwOwogICAgICAgICAgICBwcS5wdXNoKHswLCBuLCAxfSk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICAgICAgYXV0byBbY3VyckRpc3QsIG5vZGUsIHN0YXRlXSA9IHBxLnRvcCgpOwogICAgICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgICAgIGlmICh2aXNbbm9kZV1bc3RhdGVdKSBjb250aW51ZTsKICAgICAgICAgICAgdmlzW25vZGVdW3N0YXRlXSA9IHRydWU7CgogICAgICAgICAgICBmb3IgKGF1dG8gW25leHROb2RlLCB3ZWlnaHRdIDogYWRqW25vZGVdKSB7CiAgICAgICAgICAgICAgICBpbnQgbmV3RGlzdCA9IGN1cnJEaXN0ICsgKHN0YXRlID8gd2VpZ2h0IC8gMiA6IHdlaWdodCk7CgogICAgICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB3aXRob3V0IGhvcnNlCiAgICAgICAgICAgICAgICBpZiAoZHAyW25leHROb2RlXVtzdGF0ZV0gPiBuZXdEaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgZHAyW25leHROb2RlXVtzdGF0ZV0gPSBuZXdEaXN0OwogICAgICAgICAgICAgICAgICAgIHBxLnB1c2goe25ld0Rpc3QsIG5leHROb2RlLCBzdGF0ZX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhbGN1bGF0ZSB0aGUgUmVzdWx0CiAgICAgICAgaW50IHJlcyA9IElOVF9NQVg7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIHJlcyA9IG1pbihyZXMsIG1heChtaW4oZHBbaV1bMF0sIGRwW2ldWzFdKSwgbWluKGRwMltpXVswXSwgZHAyW2ldWzFdKSkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHJlcyA9PSBJTlRfTUFYKSBjb3V0IDw8IC0xIDw8IGVuZGw7CiAgICAgICAgZWxzZSBjb3V0IDw8IHJlcyA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==