왕복 여행

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

짐(Jim)은 산악 지역의 어느 마을에 사는 가장 친한 친구를 만나러 가려고 한다. 그는 먼저 고향을 떠나 목적지 마을로 가는데, 이를 가는 여정(go)이라 한다. 그런 다음 고향으로 돌아오는데, 이를 오는 여정(return)이라 한다. 이 여행 전체의 최소 비용을 구하는 프로그램을 작성하라. 전체 비용은 가는 여정의 비용과 오는 여정의 비용의 합이다.

마을들은 고향과 목적지를 포함하는 하나의 도로망을 이룬다. 모든 도로는 일방통행이며, 정해진 방향으로만 지날 수 있다. 도로를 지날 때마다 정해진 비용이 든다.

도로 비용 외에도, 지나는 각 마을에서는 비자 요금을 내야 한다. 이는 비자 요금이므로 같은 마을을 처음 방문할 때만 내면 되고, 두 번째 이후의 방문에는 요금이 들지 않는다.

각 마을에는 고도가 있다. 가는 여정에서는 내려갈 수 없다. 즉 마을 $a$에서 $b$로 이동할 때 $a$의 고도가 $b$의 고도보다 높으면 안 된다. 오는 여정에서는 반대로 올라갈 수 없다. 즉 $a$의 고도가 $b$의 고도보다 낮으면 안 된다. $a$와 $b$의 고도가 같으면 도로 $a \to b$는 두 여정 모두에서 사용할 수 있다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

n m
d2 e2
d3 e3
...
d(n-1) e(n-1)
a1 b1 c1
a2 b2 c2
...
am bm cm

모든 값은 음이 아닌 정수이며, 한 줄 안의 값들은 공백 하나로 구분된다.

$n$은 마을의 수, $m$은 일방통행 도로의 수이며 $2 \le n \le 50$, $0 \le m \le n(n-1)$이다. 마을은 $1$번부터 $n$번까지 번호가 매겨진다. $1$번 마을이 고향, $n$번 마을이 목적지이다.

$2 \le i \le n-1$인 각 마을 $i$에 대해 $d_i$는 비자 요금, $e_i$는 고도이며 $1 \le d_i \le 1000$, $1 \le e_i \le 999$이다. $1$번과 $n$번 마을은 비자 요금이 없다. $1$번 마을의 고도는 $0$, $n$번 마을의 고도는 $1000$이다. 여러 마을이 같은 고도를 가질 수 있으나, 하나의 고도를 공유하는 마을은 최대 $10$개이다.

$j$번째 도로는 마을 $a_j$에서 $b_j$로 이어지며 비용은 $c_j$이고, $1 \le a_j \le n$, $1 \le b_j \le n$, $1 \le c_j \le 1000$이다. $a_j$에서 $b_j$로는 갈 수 있지만, 별도의 도로가 주어지지 않는 한 $b_j$에서 $a_j$로는 갈 수 없다. 서로 다른 두 도로가 같은 (출발, 도착) 쌍을 갖지 않으며, 자기 자신으로 이어지는 도로도 없다.

마지막 데이터셋 다음에는 공백으로 구분된 두 개의 $0$이 담긴 줄이 온다. 이 줄은 처리 대상이 아니다.

출력

각 데이터셋에 대해, 비자 요금을 포함한 여행의 최소 총비용을 한 줄에 출력한다. 유효한 여행이 존재하지 않으면 $-1$을 출력한다.