import sys
import heapq
from itertools import permutations
def main():
input = sys.stdin.read().split()
ptr = 0
n, m = int(input[ptr]), int(input[ptr+1])
ptr += 2
adj = [[] for _ in range(n+1)]
for _ in range(m):
a = int(input[ptr])
b = int(input[ptr+1])
t = int(input[ptr+2])
adj[a].append((b, t))
adj[b].append((a, t))
ptr += 3
dragon_balls = list(map(int, input[ptr:ptr+7]))
ptr += 7
targets = list(set(dragon_balls))
def dijkstra(start):
dist = [float('inf')] * (n + 1)
dist[start] = 0
heap = [(0, start)]
heapq.heapify(heap)
while heap:
d, u = heapq.heappop(heap)
if d > dist[u]:
continue
for v, w in adj[u]:
if dist[v] > d + w:
dist[v] = d + w
heapq.heappush(heap, (dist[v], v))
return dist
# Compute distances from city 1
dist_1 = dijkstra(1)
# Check if all targets are reachable from 1
for city in targets:
if dist_1[city] == float('inf'):
print(-1)
return
# Precompute distances between all pairs of targets
dists = {}
# Check if 1 is among the targets to use dist_1
if 1 in targets:
dists[1] = dist_1
for city in targets:
if city != 1:
dists[city] = dijkstra(city)
# Now calculate all permutations and find the minimal cost
min_cost = float('inf')
for perm in permutations(targets):
current_cost = 0
current_cost += dist_1[perm[0]]
valid = True
for i in range(len(perm) - 1):
u = perm[i]
v = perm[i+1]
if dists[u][v] == float('inf'):
valid = False
break
current_cost += dists[u][v]
if current_cost >= min_cost:
break # Early exit if current exceeds current minimum
if valid and current_cost < min_cost:
min_cost = current_cost
if min_cost == float('inf'):
print(-1)
else:
print(min_cost)
if __name__ == '__main__':
main()
aW1wb3J0IHN5cwppbXBvcnQgaGVhcHEKZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucwoKZGVmIG1haW4oKToKICAgIGlucHV0ID0gc3lzLnN0ZGluLnJlYWQoKS5zcGxpdCgpCiAgICBwdHIgPSAwCiAgICBuLCBtID0gaW50KGlucHV0W3B0cl0pLCBpbnQoaW5wdXRbcHRyKzFdKQogICAgcHRyICs9IDIKCiAgICBhZGogPSBbW10gZm9yIF8gaW4gcmFuZ2UobisxKV0KICAgIGZvciBfIGluIHJhbmdlKG0pOgogICAgICAgIGEgPSBpbnQoaW5wdXRbcHRyXSkKICAgICAgICBiID0gaW50KGlucHV0W3B0cisxXSkKICAgICAgICB0ID0gaW50KGlucHV0W3B0cisyXSkKICAgICAgICBhZGpbYV0uYXBwZW5kKChiLCB0KSkKICAgICAgICBhZGpbYl0uYXBwZW5kKChhLCB0KSkKICAgICAgICBwdHIgKz0gMwoKICAgIGRyYWdvbl9iYWxscyA9IGxpc3QobWFwKGludCwgaW5wdXRbcHRyOnB0cis3XSkpCiAgICBwdHIgKz0gNwogICAgdGFyZ2V0cyA9IGxpc3Qoc2V0KGRyYWdvbl9iYWxscykpCgogICAgZGVmIGRpamtzdHJhKHN0YXJ0KToKICAgICAgICBkaXN0ID0gW2Zsb2F0KCdpbmYnKV0gKiAobiArIDEpCiAgICAgICAgZGlzdFtzdGFydF0gPSAwCiAgICAgICAgaGVhcCA9IFsoMCwgc3RhcnQpXQogICAgICAgIGhlYXBxLmhlYXBpZnkoaGVhcCkKICAgICAgICB3aGlsZSBoZWFwOgogICAgICAgICAgICBkLCB1ID0gaGVhcHEuaGVhcHBvcChoZWFwKQogICAgICAgICAgICBpZiBkID4gZGlzdFt1XToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGZvciB2LCB3IGluIGFkalt1XToKICAgICAgICAgICAgICAgIGlmIGRpc3Rbdl0gPiBkICsgdzoKICAgICAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZCArIHcKICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChoZWFwLCAoZGlzdFt2XSwgdikpCiAgICAgICAgcmV0dXJuIGRpc3QKCiAgICAjIENvbXB1dGUgZGlzdGFuY2VzIGZyb20gY2l0eSAxCiAgICBkaXN0XzEgPSBkaWprc3RyYSgxKQoKICAgICMgQ2hlY2sgaWYgYWxsIHRhcmdldHMgYXJlIHJlYWNoYWJsZSBmcm9tIDEKICAgIGZvciBjaXR5IGluIHRhcmdldHM6CiAgICAgICAgaWYgZGlzdF8xW2NpdHldID09IGZsb2F0KCdpbmYnKToKICAgICAgICAgICAgcHJpbnQoLTEpCiAgICAgICAgICAgIHJldHVybgoKICAgICMgUHJlY29tcHV0ZSBkaXN0YW5jZXMgYmV0d2VlbiBhbGwgcGFpcnMgb2YgdGFyZ2V0cwogICAgZGlzdHMgPSB7fQogICAgIyBDaGVjayBpZiAxIGlzIGFtb25nIHRoZSB0YXJnZXRzIHRvIHVzZSBkaXN0XzEKICAgIGlmIDEgaW4gdGFyZ2V0czoKICAgICAgICBkaXN0c1sxXSA9IGRpc3RfMQoKICAgIGZvciBjaXR5IGluIHRhcmdldHM6CiAgICAgICAgaWYgY2l0eSAhPSAxOgogICAgICAgICAgICBkaXN0c1tjaXR5XSA9IGRpamtzdHJhKGNpdHkpCgogICAgIyBOb3cgY2FsY3VsYXRlIGFsbCBwZXJtdXRhdGlvbnMgYW5kIGZpbmQgdGhlIG1pbmltYWwgY29zdAogICAgbWluX2Nvc3QgPSBmbG9hdCgnaW5mJykKICAgIGZvciBwZXJtIGluIHBlcm11dGF0aW9ucyh0YXJnZXRzKToKICAgICAgICBjdXJyZW50X2Nvc3QgPSAwCiAgICAgICAgY3VycmVudF9jb3N0ICs9IGRpc3RfMVtwZXJtWzBdXQogICAgICAgIHZhbGlkID0gVHJ1ZQogICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihwZXJtKSAtIDEpOgogICAgICAgICAgICB1ID0gcGVybVtpXQogICAgICAgICAgICB2ID0gcGVybVtpKzFdCiAgICAgICAgICAgIGlmIGRpc3RzW3VdW3ZdID09IGZsb2F0KCdpbmYnKToKICAgICAgICAgICAgICAgIHZhbGlkID0gRmFsc2UKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGN1cnJlbnRfY29zdCArPSBkaXN0c1t1XVt2XQogICAgICAgICAgICBpZiBjdXJyZW50X2Nvc3QgPj0gbWluX2Nvc3Q6CiAgICAgICAgICAgICAgICBicmVhayAgIyBFYXJseSBleGl0IGlmIGN1cnJlbnQgZXhjZWVkcyBjdXJyZW50IG1pbmltdW0KICAgICAgICBpZiB2YWxpZCBhbmQgY3VycmVudF9jb3N0IDwgbWluX2Nvc3Q6CiAgICAgICAgICAgIG1pbl9jb3N0ID0gY3VycmVudF9jb3N0CgogICAgaWYgbWluX2Nvc3QgPT0gZmxvYXQoJ2luZicpOgogICAgICAgIHByaW50KC0xKQogICAgZWxzZToKICAgICAgICBwcmludChtaW5fY29zdCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCk=