// #pragma GCC optimize("Ofast")
// #pragma GCC optimize ("unroll-loops")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long int ll;
#define endl '\n'
#define ld long double
#define all(a) a.begin(),a.end()
#define int long long
#define pb push_back
#define pii pair <int, int>
#define ff first
#define ss second
#define sz(v) (int)v.size()
#define UB upper_bound
#define LB lower_bound
#define BP(x) __builtin_popcountll(x)
#define PQS priority_queue <pii, vector<pii>, greater<pii> >
#define OST tree<pii, null_type,less<pii>, rb_tree_tag,tree_order_statistics_node_update>
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int getRand(int l, int r) {
uniform_int_distribution<int> uid(l, r);
return uid(rng);
}
const int INF = 1e9 + 0;
const int mod = 1e9 + 7;
//const int mod = 998244353;
const int N = 2e5 + 5;
int dp[11][11][11][11][11];
int dist[5][N];
int p;
int node[15];
int go(int ind, int a, int b, int c, int d) {
if(ind > p) return 0;
int &x = dp[ind][a][b][c][d];
if(x != -1) return x;
x = INF;
if(a > 0) {
x = min(x, dist[1][node[ind]] + go(ind+1,a-1,b,c,d));
}
if(b > 0) {
x = min(x, dist[2][node[ind]] + go(ind+1,a,b-1,c,d));
}
if(c > 0) {
x = min(x, dist[3][node[ind]] + go(ind+1,a,b,c-1,d));
}
if(d > 0) {
x = min(x, dist[4][node[ind]] + go(ind+1,a,b,c,d-1));
}
return x;
}
void solve() {
memset(dp,-1,sizeof(dp));
int n, m;
cin >> n >> m;
vector <pii> adj[n+5];
while(m--) {
int x, y, w;
cin >> x >> y >> w;
adj[x].pb({y,w});
adj[y].pb({x,w});
}
for(int i = 1; i <= 4; i++) {
for(int j = 1; j <= n; j++) {
dist[i][j] = INF;
}
}
int k; cin >> k;
int of[k+2], em[k+2];
for(int i = 1; i <= k; i++) {
cin >> of[i] >> em[i];
}
cin >> p;
for(int i = 1; i <= p; i++) {
cin >> node[i];
}
for(int i = 1; i <= k; i++) {
dist[i][of[i]] = 0;
PQS Q;
Q.push({0,of[i]});
while(!Q.empty()) {
auto cur = Q.top();
Q.pop();
int x = cur.ss, d = cur.ff;
if(dist[i][x] < d) continue;
for(auto j : adj[x]) {
if(dist[i][j.ff] > d + j.ss) {
dist[i][j.ff] = d + j.ss;
Q.push({dist[i][j.ff],j.ff});
}
}
}
}
// cout << "here";
for(int i = 1; i <= 4; i++) {
em[i] = max(0ll, em[i]-1);
em[i] = min(em[i],10ll);
}
int ans = go(1,em[1],em[2],em[3],em[4]);
if(ans >= INF) ans = -1;
cout << ans << '\n';
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif
int t = 1; cin >> t;
for(int i = 1; i <= t; i++) {
solve();
}
}
/*
*/
ICAgICAgICAvLyAjcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QiKQogICAgICAgIC8vICNwcmFnbWEgR0NDIG9wdGltaXplICgidW5yb2xsLWxvb3BzIikKICAgICAgICAvLyAjcHJhZ21hIEdDQyB0YXJnZXQoInNzZSxzc2UyLHNzZTMsc3NzZTMsc3NlNCxwb3BjbnQsYWJtLG1teCxhdngsdHVuZT1uYXRpdmUiKQogICAgIAogICAgICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogICAgICAgICNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4gCiAgICAgICAgI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+IAogICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAgICAgdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAgICAgCiAgICAgICAgdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwogICAgICAgICNkZWZpbmUgZW5kbCAnXG4nCiAgICAgICAgI2RlZmluZSBsZCBsb25nIGRvdWJsZQogICAgICAgICNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSxhLmVuZCgpCiAgICAgICAgI2RlZmluZSBpbnQgbG9uZyBsb25nCiAgICAgICAgI2RlZmluZSBwYiBwdXNoX2JhY2sKICAgICAgICAjZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KICAgICAgICAjZGVmaW5lIGZmIGZpcnN0CiAgICAgICAgI2RlZmluZSBzcyBzZWNvbmQKICAgICAgICAjZGVmaW5lIHN6KHYpIChpbnQpdi5zaXplKCkgCiAgICAgICAgI2RlZmluZSBVQiB1cHBlcl9ib3VuZAogICAgICAgICNkZWZpbmUgTEIgbG93ZXJfYm91bmQKICAgICAgICAjZGVmaW5lIEJQKHgpIF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpCiAgICAgICAgI2RlZmluZSBQUVMgcHJpb3JpdHlfcXVldWUgPHBpaSwgdmVjdG9yPHBpaT4sIGdyZWF0ZXI8cGlpPiA+IAogICAgICAgICNkZWZpbmUgT1NUIHRyZWU8cGlpLCBudWxsX3R5cGUsbGVzczxwaWk+LCByYl90cmVlX3RhZyx0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CiAgICAgICAgbXQxOTkzNyBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKICAgICAgICBpbnQgZ2V0UmFuZChpbnQgbCwgaW50IHIpIHsKICAgICAgICAgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+IHVpZChsLCByKTsKICAgICAgICAgIHJldHVybiB1aWQocm5nKTsKICAgICAgICB9CiAgICAgCiAgICAgICAgY29uc3QgaW50IElORiA9IDFlOSArIDA7CiAgICAgICAgY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CiAgICAgICAgLy9jb25zdCBpbnQgbW9kID0gOTk4MjQ0MzUzOwogICAgICAgIGNvbnN0IGludCBOID0gMmU1ICsgNTsKICAgICAKICAgICAgICBpbnQgZHBbMTFdWzExXVsxMV1bMTFdWzExXTsKICAgICAgICBpbnQgZGlzdFs1XVtOXTsKICAgICAgICBpbnQgcDsKICAgICAgICBpbnQgbm9kZVsxNV07CiAgICAgCiAgICAgICAgaW50IGdvKGludCBpbmQsIGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkKSB7CiAgICAgICAgICBpZihpbmQgPiBwKSByZXR1cm4gMDsKICAgICAgICAgIGludCAmeCA9IGRwW2luZF1bYV1bYl1bY11bZF07CiAgICAgICAgICBpZih4ICE9IC0xKSByZXR1cm4geDsKICAgICAgICAgIHggPSBJTkY7CiAgICAgICAgICBpZihhID4gMCkgewogICAgICAgICAgICB4ID0gbWluKHgsIGRpc3RbMV1bbm9kZVtpbmRdXSArIGdvKGluZCsxLGEtMSxiLGMsZCkpOwogICAgICAgICAgfQogICAgICAgICAgaWYoYiA+IDApIHsKICAgICAgICAgICAgeCA9IG1pbih4LCBkaXN0WzJdW25vZGVbaW5kXV0gKyBnbyhpbmQrMSxhLGItMSxjLGQpKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKGMgPiAwKSB7CiAgICAgICAgICAgIHggPSBtaW4oeCwgZGlzdFszXVtub2RlW2luZF1dICsgZ28oaW5kKzEsYSxiLGMtMSxkKSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZihkID4gMCkgewogICAgICAgICAgICB4ID0gbWluKHgsIGRpc3RbNF1bbm9kZVtpbmRdXSArIGdvKGluZCsxLGEsYixjLGQtMSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHg7CiAgICAgICAgfQogICAgIAogICAgICAgIHZvaWQgc29sdmUoKSB7CiAgICAgICAgICBtZW1zZXQoZHAsLTEsc2l6ZW9mKGRwKSk7CiAgICAgICAgICBpbnQgbiwgbTsKICAgICAgICAgIGNpbiA+PiBuID4+IG07CiAgICAgICAgICB2ZWN0b3IgPHBpaT4gYWRqW24rNV07CiAgICAgICAgICB3aGlsZShtLS0pIHsKICAgICAgICAgICAgaW50IHgsIHksIHc7CiAgICAgICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gdzsKICAgICAgICAgICAgYWRqW3hdLnBiKHt5LHd9KTsKICAgICAgICAgICAgYWRqW3ldLnBiKHt4LHd9KTsKICAgICAgICAgIH0KICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gNDsgaSsrKSB7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CiAgICAgICAgICAgICAgZGlzdFtpXVtqXSA9IElORjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaW50IGs7IGNpbiA+PiBrOwogICAgICAgICAgaW50IG9mW2srMl0sIGVtW2srMl07CiAgICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykgewogICAgICAgICAgICBjaW4gPj4gb2ZbaV0gPj4gZW1baV07CiAgICAgICAgICB9CiAgICAgICAgICBjaW4gPj4gcDsKICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcDsgaSsrKSB7CiAgICAgICAgICAgIGNpbiA+PiBub2RlW2ldOwogICAgICAgICAgfQogICAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBrOyBpKyspIHsKICAgICAgICAgICAgZGlzdFtpXVtvZltpXV0gPSAwOwogICAgICAgICAgICBQUVMgUTsKICAgICAgICAgICAgUS5wdXNoKHswLG9mW2ldfSk7CiAgICAgICAgICAgIHdoaWxlKCFRLmVtcHR5KCkpIHsKICAgICAgICAgICAgICBhdXRvIGN1ciA9IFEudG9wKCk7CiAgICAgICAgICAgICAgUS5wb3AoKTsKICAgICAgICAgICAgICBpbnQgeCA9IGN1ci5zcywgZCA9IGN1ci5mZjsKICAgICAgICAgICAgICBpZihkaXN0W2ldW3hdIDwgZCkgY29udGludWU7CiAgICAgICAgICAgICAgZm9yKGF1dG8gaiA6IGFkalt4XSkgewogICAgICAgICAgICAgICAgaWYoZGlzdFtpXVtqLmZmXSA+IGQgKyBqLnNzKSB7CiAgICAgICAgICAgICAgICAgIGRpc3RbaV1bai5mZl0gPSBkICsgai5zczsgIAogICAgICAgICAgICAgICAgICBRLnB1c2goe2Rpc3RbaV1bai5mZl0sai5mZn0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLy8gY291dCA8PCAiaGVyZSI7CiAgICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IDQ7IGkrKykgewogICAgICAgICAgICBlbVtpXSA9IG1heCgwbGwsIGVtW2ldLTEpOwogICAgICAgICAgICBlbVtpXSA9IG1pbihlbVtpXSwxMGxsKTsKICAgICAgICAgIH0KICAgICAgICAgIGludCBhbnMgPSBnbygxLGVtWzFdLGVtWzJdLGVtWzNdLGVtWzRdKTsKICAgICAgICAgIGlmKGFucyA+PSBJTkYpIGFucyA9IC0xOwogICAgICAgICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKICAgICAgICB9CiAgICAgCiAgICAgICAgc2lnbmVkIG1haW4oKSB7ICAgCiAgICAgICAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiAgICAgCiAgICAgICAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgICAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgICAgICAgLy8gIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICAgICAgICAjZW5kaWYKICAgICAgICAgICBpbnQgdCA9IDE7IGNpbiA+PiB0OwogICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gdDsgaSsrKSB7CiAgICAgICAgICAgICBzb2x2ZSgpOwogICAgICAgICAgfQogICAgICAgIH0gICAgCiAgICAgCiAgICAgICAgLyoKICAgICAgICAgCiAgICAgICAgKi8=