#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;
for(int testcase=0; testcase<t; testcase++){
int n,m,h;cin>>n>>m>>h;
unordered_map<int, int> hvertex;
vector<int> vis;
for (int i = 0; i < h; i++) {
int ttt;
cin>>ttt;
hvertex[ttt] = 1;
}
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});
}
vi dp(n+1, INT_MAX);
vi dp2(n+1, INT_MAX);
priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> pq;
pq.push({0, 1, 0}); // {distance, node, horse_status}
while(!pq.empty()){
auto [dist, node, has_horse] = pq.top();
pq.pop();
if(dist >= dp[node]) continue;
dp[node] = dist;
for(auto [next, weight] : adj[node]){
int new_dist = dist + (has_horse ? weight / 2 : weight);
if(dp[next] > new_dist) {
pq.push({new_dist, next, has_horse || hvertex[node]});
}
}
}
pq.push({0, n, 0});
while(!pq.empty()){
auto [dist, node, has_horse] = pq.top();
pq.pop();
if(dist >= dp2[node]) continue;
dp2[node] = dist;
for(auto [next, weight] : adj[node]){
int new_dist = dist + (has_horse ? weight / 2 : weight);
if(dp2[next] > new_dist) {
pq.push({new_dist, next, has_horse || hvertex[node]});
}
}
}
int res = INT_MAX;
for (int i = 1; i <= n; i++) {
if(dp[i] == INT_MAX || dp2[i] == INT_MAX) continue;
res = min(res, dp[i] + dp2[i]);
}
cout << (res == INT_MAX ? -1 : res) << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZW5kbCAiXG4iIAp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CmNvbnN0IGludCBNT0QgPSAxZTkrNzsKCmludCBtYWluKCl7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIAogICAgZm9yKGludCB0ZXN0Y2FzZT0wOyB0ZXN0Y2FzZTx0OyB0ZXN0Y2FzZSsrKXsKICAgICAgICBpbnQgbixtLGg7Y2luPj5uPj5tPj5oOwoKICAgICAgICB1bm9yZGVyZWRfbWFwPGludCwgaW50PiBodmVydGV4OwogICAgICAgIHZlY3RvcjxpbnQ+IHZpczsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoOyBpKyspIHsKICAgICAgICAgICAgaW50IHR0dDsKICAgICAgICAgICAgY2luPj50dHQ7CiAgICAgICAgICAgIGh2ZXJ0ZXhbdHR0XSA9IDE7CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LCBpbnQ+Pj4gYWRqKG4rMSk7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICAgICAgaW50IHUsIHYsIHc7Y2luPj51Pj52Pj53OwogICAgICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHt2LHd9KTsKICAgICAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh7dSx3fSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZpIGRwKG4rMSwgSU5UX01BWCk7CiAgICAgICAgdmkgZHAyKG4rMSwgSU5UX01BWCk7CgogICAgICAgIHByaW9yaXR5X3F1ZXVlPGFycmF5PGludCwgMz4sIHZlY3RvcjxhcnJheTxpbnQsIDM+PiwgZ3JlYXRlcjxhcnJheTxpbnQsIDM+Pj4gcHE7CiAgICAgICAgcHEucHVzaCh7MCwgMSwgMH0pOyAvLyB7ZGlzdGFuY2UsIG5vZGUsIGhvcnNlX3N0YXR1c30KICAgICAgICAKICAgICAgICB3aGlsZSghcHEuZW1wdHkoKSl7CiAgICAgICAgICAgIGF1dG8gW2Rpc3QsIG5vZGUsIGhhc19ob3JzZV0gPSBwcS50b3AoKTsKICAgICAgICAgICAgcHEucG9wKCk7CgogICAgICAgICAgICBpZihkaXN0ID49IGRwW25vZGVdKSBjb250aW51ZTsKICAgICAgICAgICAgZHBbbm9kZV0gPSBkaXN0OwoKICAgICAgICAgICAgZm9yKGF1dG8gW25leHQsIHdlaWdodF0gOiBhZGpbbm9kZV0pewogICAgICAgICAgICAgICAgaW50IG5ld19kaXN0ID0gZGlzdCArIChoYXNfaG9yc2UgPyB3ZWlnaHQgLyAyIDogd2VpZ2h0KTsKICAgICAgICAgICAgICAgIGlmKGRwW25leHRdID4gbmV3X2Rpc3QpIHsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtuZXdfZGlzdCwgbmV4dCwgaGFzX2hvcnNlIHx8IGh2ZXJ0ZXhbbm9kZV19KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBwcS5wdXNoKHswLCBuLCAwfSk7CiAgICAgICAgCiAgICAgICAgd2hpbGUoIXBxLmVtcHR5KCkpewogICAgICAgICAgICBhdXRvIFtkaXN0LCBub2RlLCBoYXNfaG9yc2VdID0gcHEudG9wKCk7CiAgICAgICAgICAgIHBxLnBvcCgpOwoKICAgICAgICAgICAgaWYoZGlzdCA+PSBkcDJbbm9kZV0pIGNvbnRpbnVlOwogICAgICAgICAgICBkcDJbbm9kZV0gPSBkaXN0OwoKICAgICAgICAgICAgZm9yKGF1dG8gW25leHQsIHdlaWdodF0gOiBhZGpbbm9kZV0pewogICAgICAgICAgICAgICAgaW50IG5ld19kaXN0ID0gZGlzdCArIChoYXNfaG9yc2UgPyB3ZWlnaHQgLyAyIDogd2VpZ2h0KTsKICAgICAgICAgICAgICAgIGlmKGRwMltuZXh0XSA+IG5ld19kaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgcHEucHVzaCh7bmV3X2Rpc3QsIG5leHQsIGhhc19ob3JzZSB8fCBodmVydGV4W25vZGVdfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW50IHJlcyA9IElOVF9NQVg7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIGlmKGRwW2ldID09IElOVF9NQVggfHwgZHAyW2ldID09IElOVF9NQVgpIGNvbnRpbnVlOwogICAgICAgICAgICByZXMgPSBtaW4ocmVzLCBkcFtpXSArIGRwMltpXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvdXQgPDwgKHJlcyA9PSBJTlRfTUFYID8gLTEgOiByZXMpIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=