#include<iostream>
#include<vector>
#include<queue>
#include<unordered_set>
using namespace std;
int n,m,k,s,p,q,c[100005],h[100005];
long long a[100005];
vector<int>b[100005];
int main(){
cin>>n>>m>>k>>s>>p>>q;
for (int i=1;i<=n;i++)a[i]=p;
for (int i=1;i<=n;i++)h[i]=-1;
for (int i=1;i<=k;i++)cin>>c[i];
for (int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
b[u].push_back(v);
b[v].push_back(u);
}
for (int i=1;i<=k;i++){
queue<pair<int,int> >q1;
unordered_set<int>d;
q1.push({c[i],0});
while(!q1.empty()){
pair<int ,int>it=q1.front();
q1.pop();
if (d.count(it.first))continue;
d.insert(it.first);
if (it.second>s)continue;
a[it.first]=q;
for (int i=0;i<b[it.first].size();i++){
q1.push({b[it.first][i],it.second+1});
}
}
a[c[i]]=-1;
}
queue<pair<int ,int> >q2;
q2.push({1,0});
while(!q2.empty()){
pair<int ,int>it=q2.front();
q2.pop();
if (a[it.first]==-1)continue;
if (h[it.first]<=it.second&&h[it.first]!=-1)continue;
h[it.first]=it.second;
for (int i=0;i<b[it.first].size();i++){
q2.push({b[it.first][i],it.second+a[b[it.first][i]]});
}
}
cout<<h[n]-a[n];
}