만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

시간은 돈이다

시간 제한2초메모리 제한1024 MB

요약
1번 승차장에서 n번 승차장까지 가는 최단 시간을 구합니다. k번째로 택시를 잡을 때마다 2^(k-1)분을 기다리며, 답은 10^9+7로 나눈 나머지입니다.
난이도

어려움10점 중 8점

유형
최단 경로, 그래프, 수학
정답자
아직 제출이 없습니다

문제

ICPC 시에는 보행자 분리 시설이 지나치게 많아서 도시 교통이 매우 복잡하다. 시민들은 시간을 아끼고 싶어 하며, 차도에서 택시를 타는 것과 보도에서 걷는 것을 번갈아 반복해서 가능한 한 빨리 목적지에 도착하려고 한다.

도시에는 택시 승강장이 많이 있다. 보도와 차도는 일부 승강장 쌍을 직접 잇고, 두 방향 모두 통행할 수 있다. 승강장 쌍 중에는 직접 연결도 없고 간접 연결도 없는 경우가 있을 수 있다.

승강장에서 걷고 있을 때는 다음 중 하나를 할 수 있다.

  • 보도가 있다면 그 보도를 걸어 다른 승강장으로 간다.
  • 차도가 그 승강장에 연결되어 있다면 택시를 잡는다.

택시를 타고 있을 때는 다음 중 하나를 할 수 있다.

  • 차도를 따라 다른 승강장까지 계속 탄다.
  • 택시에서 내린다.

택시에서 내릴 수 있는 곳은 승강장뿐이다.

보도나 차도로 이동하는 데는 각 도로마다 정해진 시간이 걸린다. 여기에 더해, 택시를 처음 잡을 때는 1분을 기다려야 한다. 이후 택시를 잡을 때마다 대기 시간이 두 배가 되어, 두 번째는 2분, 세 번째는 4분, 100번째는 2992^{99}분이다.

처음에는 승강장 1에서 걷고 있다. 승강장 nn에 도착하는 데 걸리는 최단 시간을 구하라. 답은 109+710^9+7로 나눈 나머지로 출력한다.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋은 다음 형식을 따른다.

n p q
a1 b1 c1
…
ap bp cp
d1 e1 f1
…
dq eq fq

여기서 nn, pp, qq는 각각 승강장, 보도, 차도의 개수이다. nn은 2 이상 20000 이하의 정수이다. 승강장은 1부터 nn까지 번호가 매겨져 있다. pp와 qq는 20000 이하의 양의 정수이다. ii번째 보도는 승강장 aia_i와 bib_i를 잇고, 걷는 데 cic_i분이 걸린다. jj번째 차도는 승강장 djd_j와 eje_j를 잇고, 타고 가는 데 fjf_j분이 걸린다. aia_i, bib_i, djd_j, eje_j는 nn 이하의 양의 정수이다. cic_i와 fjf_j는 10610^6 이하의 양의 정수이다.

입력의 끝은 0 세 개가 들어 있는 줄로 표시된다. 모든 데이터셋에 대해 nn의 합, pp의 합, qq의 합은 각각 200000을 넘지 않는다.

출력

각 데이터셋에 대해 승강장 1에서 승강장 nn까지 가는 데 걸리는 최단 시간을 분 단위로 한 줄에 출력한다. 시간은 109+710^9+7로 나눈 나머지로 출력한다. 이동이 불가능하면 -1을 출력한다.

예제1

  1. 예제 1

    입력
    5 4 2
    1 2 1
    2 3 100
    3 4 1
    4 5 100
    2 3 10
    4 5 10
    4 1 1
    1 2 100
    2 3 100
    4 3 3
    1 2 10
    2 3 1
    3 4 10
    2 1 2
    3 2 2
    4 3 2
    0 0 0
    
    예상 출력
    25
    -1
    7