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<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<queue>
#define X first
#define Y second
#define pb push_back
#define fr(i,n) for(int i=1;i<=n;i++)
#define fo(i,n) for(int i=0;i<n;i++)

using namespace std;

typedef long long ll;

const int mod=(int)1e9+7;
const int N=100010;

int n,m,v[N];
int head[N],next[N<<1],key[N<<1],len[N<<1],cnt;
int sdis[N],slca[N],fdis[N],flca[N];
int f[N][20],dep[N],w[N];

void add(int x,int y,int z){
    next[++cnt]=head[x];
    key[cnt]=y;
    len[cnt]=z;
    head[x]=cnt;
}

void sdfs(int x,int fa){
    sdis[x]=0;
    slca[x]=x;
    for(int i=head[x];~i;i=next[i]){
        if(key[i]==fa) continue;
        f[key[i]][0]=x;
        dep[key[i]]=dep[x]+1;
        sdfs(key[i],x);
        if(sdis[key[i]]+len[i]>sdis[x]){
            sdis[x]=sdis[key[i]]+len[i];
            slca[x]=slca[key[i]];
        }
        else if(sdis[key[i]]+len[i]==sdis[x]){
            slca[x]=x;
        }
    }
}

int getlca(int x,int y){
    if(dep[x]<dep[y]) swap(x,y);
    for(int i=19;i>=0;i--)
        if(dep[f[x][i]]>=dep[y])
            x=f[x][i];
    if(x==y) return x;
    for(int i=19;i>=0;i--)
        if(f[x][i]!=f[y][i])
            x=f[x][i],y=f[y][i];
    return f[x][0];
}

void add(int x,int y){
    int lca=getlca(x,y);
    w[f[lca][0]]-=1;
    w[lca]-=1;
    w[x]+=1;
    w[y]+=1;
}

typedef pair<int,int>pi;

void fdfs(int x,int fa){
    if(v[x]){
        if(fdis[x]>sdis[x]){
            add(x,flca[x]);
        }
        if(sdis[x]>fdis[x]){
            add(x,slca[x]);
        }
    }
    vector<pi>son;
    for(int i=head[x];~i;i=next[i]){
        if(key[i]==fa) continue;
        son.pb(pi(key[i],len[i]));
    }
    int maxdis=0,lca=0;
    for(int i=0;i<son.size();i++){
        pi a=son[i];
        if(maxdis+a.Y>fdis[a.X]){
            fdis[a.X]=maxdis+a.Y;
            flca[a.X]=lca;
        }
        else if(maxdis+a.Y==fdis[a.X]){
            flca[a.X]=x;
        }
        if(sdis[a.X]+a.Y>maxdis){
            maxdis=sdis[a.X]+a.Y;
            lca=slca[a.X];
        }   
        else if(sdis[a.X]+a.Y==maxdis){
            lca=x;
        }
    }
    maxdis=0,lca=0;
    for(int i=son.size()-1;i>=0;i--){
        pi a=son[i];
        if(maxdis+a.Y>fdis[a.X]){
            fdis[a.X]=maxdis+a.Y;
            flca[a.X]=lca;
        }
        else if(maxdis+a.Y==fdis[a.X]){
            flca[a.X]=x;
        }
        if(sdis[a.X]+a.Y>maxdis){
            maxdis=sdis[a.X]+a.Y;
            lca=slca[a.X];
        }   
        else if(sdis[a.X]+a.Y==maxdis){
            lca=x;
        }
    }
    for(int i=head[x];~i;i=next[i]){
        if(key[i]==fa) continue;
        if(fdis[x]+len[i]>fdis[key[i]]){
            fdis[key[i]]=fdis[x]+len[i];
            flca[key[i]]=flca[x];
        }
        else if(fdis[x]+len[i]==fdis[key[i]]){
            flca[key[i]]=x;
        }
        fdfs(key[i],x);
    }
}

int ans,res;

int getans(int x,int fa){
    int tot=w[x];
    for(int i=head[x];~i;i=next[i])
        if(key[i]!=fa)
            tot+=getans(key[i],x);
    if(!v[x]){
        if(tot>ans){
            ans=tot;
            res=1;
        }
        else if(tot==ans){
            res++;
        }
    }
    return tot;
}

int main(){
    memset(head,-1,sizeof head);
    scanf("%d%d",&n,&m);
    for(int i=1,x;i<=m;i++)
        scanf("%d",&x),v[x]=1;
    for(int i=1,x,y,z;i<n;i++){
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z),add(y,x,z);
    }
    dep[1]=1;
    sdfs(1,0);
    for(int i=1;i<20;i++)
        for(int j=1;j<=n;j++)
            f[j][i]=f[f[j][i-1]][i-1];
    fdfs(1,0);
    ans=-1;
    getans(1,0);
    cout<<ans<<' '<<res<<endl;
    return 0;
}
