import sys input = sys.stdin.readline from heapq import heappop,heappush N,M,L,S,E=map(int,input().split()) EDGE=[[] for i in range(N+1)] for i in range(M): a,b,t=map(int,input().split()) EDGE[a].append((b,t)) EDGE[b].append((a,t)) T=set(map(int,input().split())) DIS=[1<<60]*(N+1) DIS[1]=0 Q=[(0,1)] while Q: dis,fr=heappop(Q) if DIS[fr]!=dis: continue for to,cost in EDGE[fr]: if DIS[to]>dis+cost: DIS[to]=dis+cost heappush(Q,(DIS[to],to)) DIS2=[1<<60]*(N+1) DIS2[N]=0 Q=[(0,N)] while Q: dis,fr=heappop(Q) if DIS2[fr]!=dis: continue for to,cost in EDGE[fr]: if DIS2[to]>dis+cost: DIS2[to]=dis+cost heappush(Q,(DIS2[to],to)) ANS=1<<60 for i in range(1,N+1): if (i in T) and DIS[i]<=S+E: t=max(DIS[i],S) ANS=min(ANS,t+DIS2[i]+1) if ANS<=(1<<50): print(ANS) else: print(-1)