이 밤 그날의 반딧불을
당신의 창 가까이 보낼게요
사랑한다는 말이에요
- 아이유, 밤편지 中
선린마을에는 밤마다 소중한 사람을 향해 반딧불을 보내는 전통이 있다.
선린마을은 1번부터 N번까지의 번호가 붙은 N채의 집과 집 사이를 잇는 양방향 도로로 이루어져 있다. 반딧불은 출발지와 도착지를 직접 연결하는 길이 없거나 더 효율적인 경로가 있는 경우 다른 집들을 거쳐갈 수 있다. X번 집에는 2X 방울의 이슬이 있으며, 반딧불은 출발지와 도착지를 제외하고 이동하는 동안 거치는 모든 집의 이슬을 반드시 모두 마셔야 한다. 안타깝게도 반딧불은 각각 상수 C를 가지고 있으며, 이슬을 2C 방울 이상 마시면 더 이상 날아가지 않고 잠들어 버린다.
선린마을의 주민 찬우는 이슬을 2C 방울 이상 마실 수 없는 반딧불이 s번 집에서 e번 집으로 이동하는 데 걸리는 최소 시간이 Q번이나 궁금해졌다.
찬우의 질문에 답하는 프로그램을 작성하자.
첫째 줄에 집의 수 N과 질문의 수 Q가 주어진다.
둘째 줄부터 N줄에 걸쳐 길의 정보가 주어진다. i번 줄의 j번째 수를 D_i,j라고 할 때, D_i,j가 양의 정수라면 i번 집과 j번 집을 잇는 길을 통과하는 시간을 의미하고, 0이라면 i번 집과 j번 집 사이를 연결하는 길이 없다는 의미이다.
다음 줄부터는 Q개의 줄에 걸쳐 정수 C, s, e가 공백으로 구분되어 주어진다.
이는 이슬을 2C 방울 이상 마실 수 없는 반딧불이 s번 집에서 e번 집으로 이동하는 데 걸리는 최소 시간을 묻는 질문이다.
Q개의 줄에 걸쳐 질문의 답을 한 줄에 하나씩 순서대로 출력한다. 목적지에 도착하는 것이 불가능한 경우에는 −1을 출력한다.