1 #include<bits/stdc++.h>
 2 #define rep(i,l,r) for(int i=l;i<=r;++i)
 3 using namespace std;
 4 typedef long long ll;
 5 const int N=20023,inf=4e8;
 6 int dis[2][210][N],u,v,w,n,m,K,Q,s[N],head[N],tot,a[N],b[N],c[N],cnt;
 7 bool in[N];
 8 ll ans,mn;
 9 struct zs{
10     int to,next;
11     ll w;
12 }e[N];
13 inline void ins(int u,int v,int w){
14     e[++tot].to=v; e[tot].next=head[u]; head[u]=tot; e[tot].w=w;
15 }
16 inline void spfa(int flag,int num){
17      queue<int>q; q.push(s[num]); dis[flag][num][s[num]]=0; in[s[num]]=1;
18      while(!q.empty()){
19          int x=q.front(); q.pop();
20          for(int k=head[x];k;k=e[k].next) if(dis[flag][num][x]+e[k].w<dis[flag][num][e[k].to]){
21              dis[flag][num][e[k].to]=dis[flag][num][x]+e[k].w;
22              if(!in[e[k].to]){
23                  in[e[k].to]=1;
24                  q.push(e[k].to);
25              }
26          }
27          in[x]=0;
28      }
29 }
30 int main(){
31     memset(dis,60,sizeof dis);
32     scanf("%d%d%d%d",&n,&m,&K,&Q);
33     rep(i,1,m) scanf("%d%d%d",&a[i],&b[i],&c[i]),ins(a[i],b[i],c[i]);
34     rep(i,1,K) scanf("%d",&s[i]);
35     rep(i,1,K) spfa(0,i);
36     memset(head,0,sizeof head); tot=0;
37     rep(i,1,m) ins(b[i],a[i],c[i]);
38     rep(i,1,K) spfa(1,i);
39     ans=0;
40     while(Q--){
41         scanf("%d%d",&u,&v);
42         mn=inf;
43         rep(i,1,K) mn=min(mn,(ll)(dis[0][i][v]+dis[1][i][u]));
44         if(mn!=inf)    ++cnt,ans+=mn;
45     }
46     printf("%d\n%lld\n",cnt,ans);
47 }