모피어스는 오랜 탐색 끝에 그 사람(The One)을 찾아냈다. 컴퓨터 프로그래머 토머스 A. 앤더슨, 친구들에게는 네오라고 불리는 사람이다. 오라클을 만나고 돌아오는 길에 모피어스는 먼저 현실 세계로 빠져나갔지만, 네오가 전화기를 들기 전에 요원이 그 전화기를 부쉈다. 아직 힘을 다 깨우지 못한 네오는 요원과 싸우지 않고 다른 전화기까지 달려가야 한다.
매트릭스 세계에는 장소가 N개 있고, 네오는 0번 장소에 서 있다. 서로 다른 장소를 잇는 길이 M개 있고, 각 길은 양방향이며 지나가는 데 정해진 시간이 걸린다. 요원 몇 명과 전화기 몇 대의 위치를 알고 있다.
요원이 어떻게 움직일지 모르므로 최악을 가정한다. 어떤 요원이 장소 v까지 최소 Dv분에 도달한다면, 시각 Dv부터는 v에 요원이 서 있을 수 있다. 그래서 네오는 도착 시각이 Dv보다 작은 장소만 지날 수 있다. 도착 시각이 정확히 Dv인 경우도 마주치는 것으로 본다. 전화기가 있는 장소에도 같은 규칙이 적용된다. 네오와 요원이 전화기에 동시에 닿으면 네오는 전화기를 들기 전에 요원과 싸운다.
네오는 시각 0에 0번 장소에서 출발하고 도중에 멈추지 않는다. 안전하게 닿을 수 있는 전화기가 있으면 그중 가장 이른 도착 시각을 구하고, 하나도 없으면 그 사실을 알려라.
첫 줄에 테스트 케이스의 개수 T (1≤T≤100)가 주어진다.
각 테스트 케이스의 첫 줄에는 정수 네 개 N, M, NA, NT가 주어진다. N은 장소의 수, M은 길의 수, NA는 요원의 수, NT는 전화기의 수다. (3≤N≤1000, 1≤M≤100000, NA>0, NT>0, NA+NT<N−1)
다음 M개의 줄에는 정수 세 개 u, v, m이 주어진다 (0≤u,v<N, 1≤m≤30). 장소 u와 장소 v를 잇는 길이 있고, 그 길을 지나는 데 m분이 걸린다는 뜻이다. 같은 두 장소를 잇는 길이 여러 개일 수 있고, u와 v가 같을 수도 있다.
다음 줄에는 요원의 위치 NA개가 주어진다.
마지막 줄에는 전화기의 위치 NT개가 주어진다.
0번 장소에는 요원도 전화기도 없다. 요원과 전화기가 함께 있는 장소도 없다. 모든 테스트 케이스의 N의 합은 20000 이하이고, M의 합은 200000 이하다.
각 테스트 케이스마다 한 줄씩 출력한다. 안전하게 닿을 수 있는 전화기가 없으면 Neo may fight an Agent를 출력한다. 있으면 매트릭스에서 빠져나가는 데 걸리는 최소 시간을 분 단위 정수로 출력한다.