A delivery man works on a city modelled as a graph with n vertices and m bidirectional edges with positive distances. The delivery man has to pick and deliver k objects in order from 1 to k. For each object z ∈ {1, …, k}, he has this information:
The set {oz} is a permutation of {1, …, k}. For instance, if k = 3, o1 = 3, o2 = 1 and o3 = 2, then the objects must be delivered in this order: 2, 3 and 1. In this case, the delivery man has to pick object 1 and afterwards pick object 2. Then, he can decide to pick object 3, or alternatively to deliver object 2. If he decides to deliver object 2, then he has to pick object 3, and so on.
What is the minimum total time to deliver all the objects? The delivery man can choose where to begin and where to end his journey. Assume that the time to pick and deliver objects is neglectable, and that the delivery man can carry as many objects as he wants.
Input
Input consists of several cases. Each case begins with n and m, followed by m triples x y c indicating an edge between x and y with cost c, where x ≠ y. Follow k, and the k triples pz dz oz in order from 1 to k. Assume 2 ≤ n ≤ 1000, n − 1 ≤ m ≤ 5n, that vertices are numbered starting at 0, 1 ≤ c ≤ 109, that the graph is connected, that there is at most one edge between each pair of vertices, and 1 ≤ k ≤ 50.
Output
For each case, print the minimum cost to deliver all the objects.
Input
5 6 0 1 10 0 4 3 1 2 2 1 3 1 1 4 2 2 4 3 2 0 1 2 2 3 1 2 1 1 0 1000000000 3 1 0 3 0 1 2 1 0 1 3 2 1 2 9 1 0 12 2 1 2 1 0 1 2
Output
10 5000000000 42