경로 우회

수리된 차량의 도시에서 목적지까지 가는 최소 통행료를 구한다. 고정된 서비스 경로의 도시를 처음 지나는 순간부터는 그 경로를 그대로 따라야 한다.

보통6그래프최단 경로그리디구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

어떤 나라의 도로망은 NN개의 도시를 모두 이어 준다. 어느 도시에서 출발하든 이미 있는 도로만 이용해 나머지 모든 도시에 도착할 수 있다. 도로 하나는 서로 다른 두 도시를 잇고 양방향으로 통행할 수 있으며, 요금소가 하나씩 있다. 통행료는 두 방향 모두에서 낸다. 도로는 도시에서만 만난다. 두 도시를 잇는 도로가 둘 이상인 경우는 없다.

디아스 운송은 도시 사이의 화물 배송 서비스를 운영한다. 화물 하나는 도시 AA에서 다른 도시 BB로 옮겨야 한다. 회사는 화물마다 도시 CC개와 도로 C1C-1개로 이루어진 서비스 경로를 정한다. 서비스 경로의 첫 도시가 화물의 출발지, 마지막 도시가 도착지다. 서비스 경로는 같은 도시를 두 번 지나지 않고, 배송을 맡은 차량은 정해진 서비스 경로로만 달릴 수 있다.

그런데 어느 날 배송 중이던 차량이 고장 났다. 차량은 서비스 경로에 속하지 않은 도시로 옮겨져 수리를 받았다. 회사는 수리를 마친 도시에서 출발해 화물을 도착지까지 배달하는 데 드는 최소 통행료 총액을 알고 싶다. 여기에 제약이 하나 더 붙는다. 차량이 도중에 서비스 경로에 속한 도시를 지나면, 그 도시부터는 다시 서비스 경로를 따라가야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 네 정수 NN, MM, CC, KK가 주어진다 (4N2504 \le N \le 250, 3MN×(N1)/23 \le M \le N \times (N-1) / 2, 2CN12 \le C \le N-1, CKN1C \le K \le N-1). 차례로 나라의 도시 수, 도로 수, 서비스 경로에 속한 도시 수, 차량을 수리한 도시를 뜻한다. 도시는 00부터 N1N-1까지의 정수로 구분한다. 서비스 경로는 0,1,,C10, 1, \ldots, C-1이다. 즉 출발지가 00이고, 00에서 11로, 11에서 22로 이어져 도착지 C1C-1까지 간다.

이어지는 MM개의 줄은 나라의 도로망을 설명한다. 각 줄에는 도로 하나를 나타내는 세 정수 UU, VV, PP가 주어진다 (0U,VN10 \le U, V \le N-1, UVU \neq V, 0P2500 \le P \le 250). 도시 UU와 도시 VV를 잇는 도로가 있고 그 통행료가 PP라는 뜻이다.

마지막 테스트 케이스 다음 줄에는 공백으로 구분된 네 개의 00이 주어진다.

출력

각 테스트 케이스마다 한 줄에 정수 TT 하나를 출력한다. TT는 차량이 도착지에 이르는 데 필요한 최소 통행료 총액이다.