#include using namespace std; int N, M, L, K, A, H, F[120], B[120][120]; int main() { while (1) { cin >> N >> M >> L >> K >> A >> H; if (!(N | M | L | K | A | H)) break; memset(F, 0, sizeof(F)); memset(B, 0, sizeof(B)); for (int i = 0; i < L; i++) { int f; cin >> f; F[f] = 1; } F[A] = F[H] = 1; for (int i = 0; i < K; i++) { int x, y, t; cin >> x >> y >> t; B[x][y] = B[y][x] = t; } for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if (B[j][i]) for (int k = 0; k < N; k++) if (B[i][k]) if (!B[j][k] || B[j][i] + B[i][k] < B[j][k]) B[j][k] = B[j][i] + B[i][k]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) { if (!F[i] || !F[j] || M < B[i][j]) B[i][j] = 0; } for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if (B[j][i]) for (int k = 0; k < N; k++) if (B[i][k]) if (!B[j][k] || B[j][i] + B[i][k] < B[j][k]) B[j][k] = B[j][i] + B[i][k]; if (!B[A][H]) printf("Help!\n"); else printf("%d\n", (M < B[A][H]) ? B[A][H] * 2 - M: B[A][H]); } return 0; }