1 #include<bits/stdc++.h>
2 #define N 10005
3 #define M 50005
4 #define ll long long
5 using namespace std;
6 int n,m,k,t,tot,x,y,z,num,ans;
7 int head[N],dis[N];
8 int p[20];
9 bool flag[N];
10 int dist[20][20];
11 ll dp[265005][20];
12 struct node{
13 int next,to,dis;
14 }e[2*M];
15 void add(int x,int y,int z){
16 e[++tot].next=head[x];
17 head[x]=tot;
18 e[tot].to=y;
19 e[tot].dis=z;
20 }
21 queue<int> q;
22 void spfa(int x,int id){
23 for (int i=1;i<=n;i++) dis[i]=1e9,flag[i]=false;
24 dis[x]=0; flag[x]=true;
25 q.push(x);
26 while (!q.empty()){
27 int u=q.front();
28 q.pop();
29 for (int i=head[u];i;i=e[i].next){
30 int v=e[i].to;
31 if (dis[v]>dis[u]+e[i].dis){
32 dis[v]=dis[u]+e[i].dis;
33 if (!flag[v]){
34 q.push(v);
35 flag[v]=true;
36 }
37 }
38 }
39 flag[u]=false;
40 }
41 for (int i=1;i<=k-1;i++)
42 dist[id][i]=dis[p[i]];
43 dist[id][k]=dis[1];
44 }
45 int main(){
46 scanf("%d%d%d%d",&n,&m,&k,&t);
47 for (int i=1;i<=m;i++)
48 scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,z);
49 p[1]=1; k++;
50 for (int i=2;i<=k;i++) scanf("%d",&p[i]);
51 p[++k]=n; k++;
52 for (int i=1;i<=k-1;i++) spfa(p[i],i);
53 for (int i=1;i<=k-1;i++) dist[k][i]=dist[1][i];
54 for (int sta=0;sta<=(1<<k)-1;sta++)
55 for (int j=1;j<=k;j++) dp[sta][j]=1e18;
56 dp[1][1]=0;
57 for (int sta=1;sta<=(1<<k)-1;sta++)
58 for (int j=1;j<=k;j++)
59 for (int l=1;l<=k;l++)
60 if (!(sta&(1<<(l-1))))
61 dp[sta|(1<<(l-1))][l]=min(dp[sta|(1<<(l-1))][l],dp[sta][j]+dist[j][l]);
62 num=-1; ans=1e9;
63 for (int sta=0;sta<=(1<<k)-1;sta++)
64 if (dp[sta][k]<=t&&(sta&(1<<(k-2)))){
65 int x=sta,tot=0;
66 while (x) x-=(x & (-x)),tot++;
67 tot-=3;
68 if (tot>num) num=tot,ans=dp[sta][k]; else
69 if (tot==num&&dp[sta][k]<ans) ans=dp[sta][k];
70 }
71 if (num==-1) puts("-1");
72 else printf("%d %d\n",num,ans);
73 return 0;
74 }