#include<bits/stdc++.h>
using namespace std;
int bj[100005];
int f[100005];
struct Node{
int u,v,w;
}b[100005];
bool cmp(Node x,Node y){
return x.w>y.w;
}
int fin(int x){
if(x!=f[x])return f[x]=fin(f[x]);
return x;
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=k;i++){
int x;
scanf("%d",&x);
bj[x]=1;
}
long long js=0,ans=0;
for(int i=1;i<=n-1;i++){
scanf("%d%d%d",&b[i].u,&b[i].v,&b[i].w);
js+=b[i].w;
}
sort(b+1,b+n,cmp);
for(int i=1;i<=n-1;i++){
if(!bj[fin(b[i].v)]||!bj[fin(b[i].u)]){
f[fin(b[i].u)]=fin(b[i].v);
bj[fin(b[i].v)]=max(bj[fin(b[i].u)],bj[fin(b[i].v)]);
ans+=b[i].w;
}
}
printf("%lld",js-ans);
return 0;
}