let inf = 1010101010101010
let rec for_iter a b f = if a >= b then () else (f a; for_iter (a+1) b f)

let rec main () =
  let n, m, l, k, a, h =
    Scanf.scanf " %d %d %d %d %d %d" (fun u v w x y z -> u,v,w,x,y,z) in
  if n+m+l+k+a+h = 0 then () else

  let is_fridge = Array.make n false in
  for_iter 0 l (fun _ ->
    Scanf.scanf " %d" (fun x -> is_fridge.(x) <- true));
  is_fridge.(a) <- true; is_fridge.(h) <- true;

  let costs =
    Array.init n (fun _ -> Array.make n inf) in
  for_iter 0 n (fun i -> costs.(i).(i) <- 0);
  for_iter 0 k (fun _ ->
    Scanf.scanf " %d %d %d" (fun x y z ->
      costs.(x).(y) <- z;
      costs.(y).(x) <- z));

  for_iter 0 n (fun k ->
    for_iter 0 n (fun i ->
      for_iter 0 n (fun j ->
        costs.(i).(j) <- min costs.(i).(j) (costs.(i).(k) + costs.(k).(j))
  )));

  for_iter 0 n (fun i ->
    for_iter 0 n (fun j ->
      if i <> j && (is_fridge.(i) = false || is_fridge.(j) = false || costs.(i).(j) > m) then
        costs.(i).(j) <- inf
  ));
  for_iter 0 n (fun k ->
    for_iter 0 n (fun i ->
      for_iter 0 n (fun j ->
        costs.(i).(j) <- min costs.(i).(j) (costs.(i).(k) + costs.(k).(j))
  )));

  if costs.(a).(h) = inf then
    print_endline "Help!"
  else
    Printf.printf "%d\n%!" (costs.(a).(h) + max 0 (costs.(a).(h) - m));

  main ()

let () = main ()

