7 3
1 4 7
1 2 2
2 3 3
3 4 8
2 5 1
1 6 4
6 7 5
 10 2
1 5
5 3 2
8 4 8
7 6 9
7 10 1
10 1 4
9 5 1
5 8 2
7 2 9
6 5 6
 10 5
4 8 7 5 1
5 1 1
2 7 1
4 3 1
10 9 1
10 1 1
1 8 1
10 7 1
10 3 1
7 6 1
 10 9
9 7 6 10 3 5 2 8 1
9 4 10
10 8 3
3 6 2
5 1 8
5 2 5
1 10 10
6 7 1
9 1 7
1 6 3
 10 5
8 5 2 10 1
3 1 7
5 4 6
10 8 4
6 8 9
7 8 4
9 5 6
8 1 9
2 10 2
9 8 7

3 2
 2 3
 5 1
 0 1
 5 1

#include <bits/stdc++.h>
#define maxn 100005
using namespace std;

int N,M,head[maxn],lk[maxn*2],next[maxn*2],le[maxn*2],w[maxn],fa[maxn],f[maxn][3],g[maxn][3],s[maxn],q[maxn],bg[maxn][2],gb[maxn][2];
bool c[maxn];

void add(int u,int v,int x,int t) {lk[t]=v,le[t]=x,next[t]=head[u],head[u]=t;}

void init()
{
	scanf("%d%d",&N,&M);
	for (int i=1,x; i<=M; i++) scanf("%d",&x),c[x]=1;
	for (int i=1,u,v,w; i<N; i++) scanf("%d%d%d",&u,&v,&w),add(u,v,w,i),add(v,u,w,i+N-1);
}

void update(int a,int b,int c,int d,int&x,int&y) {if (a>c) x=a,y=b; else if (a<c) x=c,y=d; else x=a,y=0;}

void dfs1(int u)
{
	int x=c[u]?0:-1e9,y=0;
	for (int i=head[u],v; v=lk[i],i; i=next[i]) if (v!=fa[u])
	{
		fa[v]=u,w[v]=le[i],dfs1(v);
		update(f[v][0]+w[v],f[v][1],x,y,x,y);
	}
	f[u][0]=x,f[u][1]=!y?u:y,f[u][2]=u;
}

void dfs2(int u)
{
	int z=fa[u],x=gb[u][0]+w[u],y=gb[u][1],t=0;
	
	update(g[z][0]+w[u],g[z][1],x,y,g[u][0],g[u][1]),g[u][2]=g[z][0]+w[u]>x?g[z][2]:z;
	if (!g[u][1]) g[u][1]=z;	
	if (g[u][0]<0&&c[u]) g[u][0]=0,g[u][1]=g[u][2]=u;
	
	bg[0][0]=-1e9,bg[0][1]=0;
	for (int i=head[u],v; v=lk[i],i; i=next[i]) if (v!=fa[u])
	{
		q[++t]=v;
		update(bg[t-1][0],bg[t-1][1],f[v][0]+w[v],f[v][1],bg[t][0],bg[t][1]);
	}
	for (int i=t,x=-1e9,y=0,v; v=q[i],i; i--)
	{
		update(x,y,bg[i-1][0],bg[i-1][1],gb[v][0],gb[v][1]);
		update(x,y,f[v][0]+w[v],f[v][1],x,y);
	}
	for (int i=head[u],v; v=lk[i],i; i=next[i]) if (v!=fa[u]) dfs2(v);
}

void dfs(int u) {for (int i=head[u],v; v=lk[i],i; i=next[i]) if (v!=fa[u]) dfs(v),s[u]+=s[v];}

void doit()
{
	memset(f,192,sizeof(f)),memset(g,192,sizeof(g)),dfs1(1),dfs2(1);
	for (int i=1,x,y; i<=N; i++) if (c[i]&&f[i][0]!=g[i][0])
	{
		if (f[i][0]>g[i][0]) x=f[i][1],y=f[i][2]; else if (g[i][0]>f[i][0]) x=g[i][1],y=g[i][2];
		s[i]++,s[x]++,s[y]--,s[fa[y]]--;
	}
	dfs(1);
	int x=-1e9,y;
	for (int i=1; i<=N; i++) if (!c[i]) if (s[i]>x) x=s[i],y=1; else if (s[i]==x) y++;
	printf("%d %d\n",x,y);
}

int main()
{
	init();
	doit();
	return 0;
}