홍수 피해를 입은 마을에 봉사 캠프를 세운다. 마을에는 1번부터 N번까지 번호가 붙은 집이 N개 있고, 집과 집은 N−1개의 도로로 이어져 있다. 그래서 어느 두 집 사이에도 이동 경로가 정확히 하나뿐이다. 각 도로에는 트럭이 그 도로를 지나는 데 걸리는 시간이 정해져 있다. 캠프는 어느 집의 마당에 세우는데, 관리자는 그 집을 아직 고르지 않았다.
미르코가 트럭 운전을 맡았다. 봉사팀을 캠프에서 각자 일할 집까지 태워다 주는 일이다. 트럭에는 모든 봉사팀이 한 번에 탈 수 있다. 봉사팀은 모두 K개이고, 각 봉사팀이 가는 집은 서로 다르다.
미르코는 캠프에서 봉사팀 K개를 한꺼번에 태우고 출발한 다음, 자기가 정한 순서대로 각 집에 봉사팀을 내려 준다. 마지막 봉사팀을 내려 준 뒤에는 캠프로 돌아가지 않고 그 집에 남아 일을 돕는다.
캠프 자리를 정하려면 각 집을 캠프로 삼았을 때의 소요 시간을 알아야 한다. 집마다, 그 집에 캠프를 세웠을 때 미르코가 봉사팀을 모두 데려다 주는 데 걸리는 최소 시간을 구하라.
첫째 줄에 두 정수 N과 K가 주어진다. (1≤N≤500000, 1≤K≤N)
다음 N−1개 줄에는 각각 세 정수 A, B, C가 주어진다. A번 집과 B번 집을 잇는 양방향 도로를 트럭이 지나는 데 시간이 C만큼 걸린다는 뜻이다. (1≤A,B≤N, 1≤C≤1000000)
다음 K개 줄에는 각 봉사팀이 가는 집의 번호가 한 줄에 하나씩 주어진다. K개 번호는 모두 다르다.
N개 줄을 출력한다. i번째 줄에는 i번 집에 캠프를 세웠을 때 미르코가 봉사팀을 모두 데려다 주는 데 걸리는 최소 시간을 출력한다.
첫 번째 예제를 보자. 1번 집에서 출발하면 2번, 4번, 2번, 5번 집 순서로 움직이면 된다. 2번 집에서 출발하면 5번, 2번, 4번 집 순서로 움직일 수 있다.