#include <bits/stdc++.h>
#define FNAME "ROAD"
using namespace std;
typedef long long ll;
const int MAXN = (int)2e5 + 5;
const int LIM = (int)1e5 + 1;
const long long MOD = (long long)1e13 + 15092007;
#define xd '\n'
#define fi first
#define se second
const long long base = (long long)256;
const long long INF = (long long)1e10;
template<class X, class Y> bool minimize(X &a, Y b) {if(a>b){a=b;return true;}return false;};
template<class X, class Y> bool maximize(X &a, Y b) {if(a<b){a=b;return true;}return false;};
const int LOG = 19;
void HuuThien() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(FNAME".inp", "r")) {
freopen(FNAME".inp", "r", stdin);
freopen(FNAME".out", "w", stdout);
}
}
struct edges{
int u, v;
long long w;
int eID;
};
int parent[MAXN], Size[MAXN];
bool visited[MAXN];
int n, m, q, p;
vector<edges> Edges;
void makeset(int n) {
for(int i = 1; i <= n ; i++) {
Size[i] = 1;
parent[i] = i;
}
}
int find(int u) {
if(u == parent[u]) return u;
return parent[u] = find(parent[u]);
}
void Union(int a, int b) {
a = find(a);
b = find(b);
if(a != b) {
if(Size[a] < Size[b]) swap(a, b);
Size[a] += Size[b];
parent[b] = a;
}
}
void Init() {
cin >> n >> m;
makeset(n);
for(int i = 1; i <= m ; i++) {
int u, v, w;
cin >> u >> v >> w;
Edges.push_back({u, v, w, i});
}
}
vector<int> needed;
vector<pair<int, int>> banned;
bool cmp(edges a, edges b) {
return a.w < b.w;
}
void Solve() {
int cnt = 0;
long long ans = 0;
cin >> q;
for(int i = 1; i <= q ; i++) {
int node;
cin >> node;
needed.push_back(node);
}
cin >> p;
for(int i = 1; i <= p ; i++) {
int x, y;
cin >> x >> y;
if(x > y) swap(x, y);
banned.push_back({x, y});
}
sort(banned.begin(), banned.end());
for(pair<int, int> pe : banned) {
int x = pe.first, y = pe.second;
edges kx = Edges[x - 1];
edges ky = Edges[y - 1];
kx.eID = ky.eID = min(kx.eID, ky.eID);
Edges[x - 1] = kx;
Edges[y - 1] = ky;
}
for(int node : needed) {
edges k = Edges[node - 1];
visited[k.eID] = true;
Union(k.u, k.v);
ans += k.w;
cnt++;
}
sort(Edges.begin(), Edges.end(), cmp);
for(edges e : Edges) {
if(!visited[e.eID]) {
visited[e.eID] = true;
if(find(e.u) != find(e.v)) {
ans += e.w;
cnt++;
Union(e.u, e.v);
}
}
}
if(cnt == n - 1) {
cout << ans;
} else {
cout << -1;
}
}
signed main() {
HuuThien();
Init();
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk5BTUUgIlJPQUQiCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTUFYTiA9IChpbnQpMmU1ICsgNTsKY29uc3QgaW50IExJTSA9IChpbnQpMWU1ICsgMTsKY29uc3QgbG9uZyBsb25nIE1PRCA9IChsb25nIGxvbmcpMWUxMyArIDE1MDkyMDA3OwojZGVmaW5lIHhkICdcbicgCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKY29uc3QgbG9uZyBsb25nIGJhc2UgPSAobG9uZyBsb25nKTI1NjsKY29uc3QgbG9uZyBsb25nIElORiA9IChsb25nIGxvbmcpMWUxMDsKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gYm9vbCBtaW5pbWl6ZShYICZhLCBZIGIpIHtpZihhPmIpe2E9YjtyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO307CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGJvb2wgbWF4aW1pemUoWCAmYSwgWSBiKSB7aWYoYTxiKXthPWI7cmV0dXJuIHRydWU7fXJldHVybiBmYWxzZTt9Owpjb25zdCBpbnQgTE9HID0gMTk7Cgp2b2lkIEh1dVRoaWVuKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKEZOQU1FIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihGTkFNRSIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihGTkFNRSIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQp9CgpzdHJ1Y3QgZWRnZXN7CiAgICBpbnQgdSwgdjsKICAgIGxvbmcgbG9uZyB3OwogICAgaW50IGVJRDsKfTsKCmludCBwYXJlbnRbTUFYTl0sIFNpemVbTUFYTl07CmJvb2wgdmlzaXRlZFtNQVhOXTsKaW50IG4sIG0sIHEsIHA7CnZlY3RvcjxlZGdlcz4gRWRnZXM7Cgp2b2lkIG1ha2VzZXQoaW50IG4pIHsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbiA7IGkrKykgewogICAgICAgIFNpemVbaV0gPSAxOwogICAgICAgIHBhcmVudFtpXSA9IGk7CiAgICB9Cn0KCmludCBmaW5kKGludCB1KSB7CiAgICBpZih1ID09IHBhcmVudFt1XSkgcmV0dXJuIHU7CiAgICByZXR1cm4gcGFyZW50W3VdID0gZmluZChwYXJlbnRbdV0pOwp9Cgp2b2lkIFVuaW9uKGludCBhLCBpbnQgYikgewogICAgYSA9IGZpbmQoYSk7CiAgICBiID0gZmluZChiKTsKICAgIGlmKGEgIT0gYikgewogICAgICAgIGlmKFNpemVbYV0gPCBTaXplW2JdKSBzd2FwKGEsIGIpOwogICAgICAgIFNpemVbYV0gKz0gU2l6ZVtiXTsKICAgICAgICBwYXJlbnRbYl0gPSBhOwogICAgfQp9Cgp2b2lkIEluaXQoKSB7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgbWFrZXNldChuKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbSA7IGkrKykgewogICAgICAgIGludCB1LCB2LCB3OwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBFZGdlcy5wdXNoX2JhY2soe3UsIHYsIHcsIGl9KTsKICAgIH0KfQoKdmVjdG9yPGludD4gbmVlZGVkOwp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGJhbm5lZDsKCmJvb2wgY21wKGVkZ2VzIGEsIGVkZ2VzIGIpIHsKICAgIHJldHVybiBhLncgPCBiLnc7Cn0KCnZvaWQgU29sdmUoKSB7CiAgICBpbnQgY250ID0gMDsKICAgIGxvbmcgbG9uZyBhbnMgPSAwOwogICAgY2luID4+IHE7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHEgOyBpKyspIHsKICAgICAgICBpbnQgbm9kZTsKICAgICAgICBjaW4gPj4gbm9kZTsKICAgICAgICBuZWVkZWQucHVzaF9iYWNrKG5vZGUpOwogICAgfQoKICAgIGNpbiA+PiBwOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBwIDsgaSsrKSB7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBpZih4ID4geSkgc3dhcCh4LCB5KTsKICAgICAgICBiYW5uZWQucHVzaF9iYWNrKHt4LCB5fSk7CiAgICB9CgogICAgc29ydChiYW5uZWQuYmVnaW4oKSwgYmFubmVkLmVuZCgpKTsKCiAgICBmb3IocGFpcjxpbnQsIGludD4gcGUgOiBiYW5uZWQpIHsKICAgICAgICBpbnQgeCA9IHBlLmZpcnN0LCB5ID0gcGUuc2Vjb25kOwogICAgICAgIGVkZ2VzIGt4ID0gRWRnZXNbeCAtIDFdOwogICAgICAgIGVkZ2VzIGt5ID0gRWRnZXNbeSAtIDFdOwogICAgICAgIGt4LmVJRCA9IGt5LmVJRCA9IG1pbihreC5lSUQsIGt5LmVJRCk7CiAgICAgICAgRWRnZXNbeCAtIDFdID0ga3g7CiAgICAgICAgRWRnZXNbeSAtIDFdID0ga3k7CiAgICB9CgogICAgZm9yKGludCBub2RlIDogbmVlZGVkKSB7CiAgICAgICAgZWRnZXMgayA9IEVkZ2VzW25vZGUgLSAxXTsKICAgICAgICB2aXNpdGVkW2suZUlEXSA9IHRydWU7IAogICAgICAgIFVuaW9uKGsudSwgay52KTsKICAgICAgICBhbnMgKz0gay53OwogICAgICAgIGNudCsrOwogICAgfQoKICAgIHNvcnQoRWRnZXMuYmVnaW4oKSwgRWRnZXMuZW5kKCksIGNtcCk7CgogICAgZm9yKGVkZ2VzIGUgOiBFZGdlcykgewogICAgICAgIGlmKCF2aXNpdGVkW2UuZUlEXSkgewogICAgICAgICAgICB2aXNpdGVkW2UuZUlEXSA9IHRydWU7CiAgICAgICAgICAgIGlmKGZpbmQoZS51KSAhPSBmaW5kKGUudikpIHsKICAgICAgICAgICAgICAgIGFucyArPSBlLnc7CiAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgIFVuaW9uKGUudSwgZS52KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZihjbnQgPT0gbiAtIDEpIHsKICAgICAgICBjb3V0IDw8IGFuczsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCAtMTsKICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBIdXVUaGllbigpOwogICAgSW5pdCgpOwogICAgU29sdmUoKTsKICAgIHJldHVybiAwOwp9