밥(Bob)은 중소 도시의 교통과에서 일한다. 그는 도시의 교통 신호등을 관리하고 필요할 때 수리반을 보내는 일을 맡고 있다. 여유 시간이 많은 그는 도시 곳곳을 오가는 짧은 이동의 최단 시간 경로를 알아내려 한다. 밥은 거리의 배치와 모든 신호등의 위치·주기를 알고 있으며, 문제를 단순화하기 위해 다음과 같이 가정한다.
또한 U턴은 허용되지 않으며, 경로는 같은 교차로를 다시 방문하지 않는다. 밥이 최단 시간 경로를 찾도록 도와라.
초록·노랑·빨강 지속 시간이 각각 $g$, $y$, $r$인 신호등의 주기 길이는 $g + y + r$이다. 모든 신호등은 시각 0에 초록불 구간을 시작한다. 한 주기 안에서 $[0, g)$초는 초록불, $[g, g+y)$초는 노란불, $[g+y, g+y+r)$초는 빨간불이며, 이후 주기가 반복된다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 네 양의 정수 $n$, $m$, $s$, $e$가 주어진다. $n$ ($2 \le n \le 100$)은 신호등의 수(0번부터 $n-1$번까지 번호가 매겨져 있다), $m$은 신호등을 잇는 도로의 수, $s$와 $e$ ($s \ne e$)는 이동의 시작 신호등과 도착 신호등이다.
이어지는 $n$개의 줄은 각각 g y r 형식이며, 그 신호등이 초록불, 노란불, 빨간불인 시간(초)을 나타낸다 ($1 \le g, y, r \le 100$). 이 줄들 중 첫 번째는 0번 신호등, 두 번째는 1번 신호등에 대한 것이며 이런 식으로 계속된다.
그다음 $m$개의 줄은 각각 하나의 도로를 l1 l2 t 형식으로 설명한다. 여기서 l1, l2는 도로가 잇는 두 신호등이고, $t$는 최고 속도로 그 도로를 달리는 데 걸리는 시간(초, $t \le 500$)이다. 정지 상태에서 그 도로를 출발할 때의 이동 시간은 이 값에 $5$를 더하면 된다. 모든 도로는 양방향이다.
시각 0에 모든 신호등은 막 초록불 구간을 시작하고, 당신의 차는 신호등 $s$에 정지해 있다. 출발하는 데 5초가 걸리므로 $g + y$가 5 이하인 경우는 없다고 가정해도 된다. 마지막 테스트 케이스 다음에는 0 0 0 0이 있는 줄이 오며 입력이 끝난다.
각 테스트 케이스마다, 시작 신호등에서 도착 신호등까지 가는 최단 시간을 mm:ss 형식(분과 초)으로 한 줄에 출력한다. 초가 10보다 작으면 앞에 0을 붙인다(예: 4:5가 아니라 4:05). 분이 10보다 작으면 한 자리로만 출력한다(4:05처럼).