고객 서비스 계획

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

문제

가중 그래프 G=(V,E)G = (V, E)의 정점 몇 곳에 시설 하나와 여러 고객이 있다. 고객 jj마다 음이 아닌 수요 djd_j와 그 고객의 중요도를 나타내는 음이 아닌 우선순위 pjp_j가 주어진다.

고객 jj의 서비스 비용은 cj×djc_j \times d_j이다. 여기서 cjc_j는 그래프 GG에서 시설이 있는 정점부터 고객 jj가 있는 정점까지의 최단 거리다. 예를 들어 아래 그림에서 고객 aa의 서비스 비용은 3×da3 \times d_a이고, dad_a는 고객 aa의 수요다. 같은 그림에서 고객 bb는 시설까지 가는 경로가 없으므로 서비스 비용이 무한대다.

고객 집합의 부분집합 중에서, 그 부분집합에 속한 고객의 서비스 비용 합이 음이 아닌 예산 BB를 넘지 않으면서 우선순위 합이 가장 큰 경우를 찾는 프로그램을 작성하시오.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1T201 \le T \le 20)

각 테스트 케이스의 첫째 줄에는 그래프의 정점 개수 NN이 주어진다. (1N1001 \le N \le 100) 정점 번호는 00부터 N1N-1까지이며, 00번 정점에 시설이 있다.

다음 줄에는 고객의 수 MM이 주어진다. (0M1000 \le M \le 100) 이어지는 MM개 줄에는 고객 한 명의 정보가 정수 세 개로 주어진다. 차례대로 고객이 있는 정점 번호, 수요, 우선순위다. 정점 번호는 00 이상 N1N-1 이하이고, 수요와 우선순위는 각각 00 이상 100100 이하다.

다음 줄에는 전체 예산 BB가 주어진다. (0B1000 \le B \le 100)

다음 줄에는 간선의 개수 LL이 주어진다. (0L1000 \le L \le 100) 이어지는 LL개 줄에는 간선 하나의 정보가 정수 세 개로 주어진다. 앞의 두 정수는 간선이 잇는 두 정점의 번호이고, 세 번째 정수는 간선의 비용이다. 정점 번호는 00 이상 N1N-1 이하이고, 비용은 00 이상 100100 이하다. 간선에는 방향이 없다.

출력

출력은 표준 출력으로 한다. 테스트 케이스마다 서비스 대상으로 고른 고객의 우선순위 합을 한 줄에 하나씩 출력한다.