번부터 번까지 번호가 매겨진 개의 정점과 개의 무향 가중치 간선으로 이루어진 단순 그래프가 있다.
간선을 이용하여 두 정점을 이동할 때에는 간선의 가중치 시간이 걸린다. 예를 들어, 가중치가 3인 간선을 이용하여 두 정점을 이동할 때는 3시간이 걸린다. 이동하는 중에는 어떠한 정점에도 있지 않다. 간선을 이용하지 않고 정점에서 가만히 있으면서 시간을 보낼 수도 있다.
당신은 번 정점에서 출발해서 번 정점을 거쳐 번 정점으로 최대한 빨리 이동해야 한다.
당신은 다음과 같은 회귀 행동을 최대 번 할 수 있다.
- 시간 전에 있던 정점으로 이동한다. 이동하기 전과 후 모두 정점 위에 있어야 한다. 출발한 지 시간이 지나지 않았다면 이 행동을 할 수 없다.
회귀 행동을 최대 번 사용할 수 있을 때 번 정점에서 출발해서 번 정점을 거쳐 번 정점으로 이동하는 데 걸리는 최소 시간을 구하시오.
Input
첫 번째 줄에 단순 그래프의 정점의 개수 , 간선의 개수 , 거쳐야 하는 정점의 번호 , 가 공백으로 구분되어 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 각 줄에 간선이 연결하는 두 정점의 번호 , 와 가중치 가 공백으로 구분되어 주어진다.
Output
첫 번째 줄에 번 정점에서 출발해서 번 정점을 거쳐 번 정점으로 이동하는 데 걸리는 최소 시간을 출력한다.
단, 이러한 이동이 불가능한 경우 -1 을 대신 출력한다.
Subtasks
Samples
예제 1
입력
4 3 3 1
1 2 2
2 3 1
2 4 3
출력
6
예제 2
입력
4 3 2 0
1 2 1
2 3 2
3 1 3
출력
-1