#include using namespace std; #define REP(i,n)for(int i=0;i<(n);++i) #define REP1(i,n)for(int i=1;i<=(n);++i) #define FORE(...)for(auto&&__VA_ARGS__) #define ALL(x)begin(x),end(x) #define mset(x,y)memset(x,y,sizeof x) #define pb push_back #define eb emplace_back #define V vector #define lb(x,y)(lower_bound(begin(x),end(x),y)-begin(x)) #define ub(x,y)(upper_bound(begin(x),end(x),y)-begin(x)) templateinline bool chmin(T&A,S B){return A>B?A=B,1:0;} templateinline bool chmax(T&A,S B){return A; using PLL=pair; constexpr Int INF=1001001001001001001LL; Int N,M,L,S,E; VG[202020]; bool T[202020]; Vdijkstra(Int s){ Vret(N,INF); ret[s]=0; priority_queue>Q; Q.push({0,s}); while(!Q.empty()){ auto[c,u]=Q.top(); c=-c; Q.pop(); if(ret[u]>N>>M>>L>>S>>E; REP(i,M){ Int a,b,t;cin>>a>>b>>t;--a;--b; G[a].eb(b,t); G[b].eb(a,t); } REP(i,L){ int t;cin>>t; T[--t]=true; } auto se=dijkstra(0); auto mi=dijkstra(N-1); Int ans=INF; REP(i,N){ if(T[i]&&se[i]