#include <bits/stdc++.h>
#define S second
#define F first
#define PB push_back
using namespace std;
int const N=1e6+1;
bool odw[N];
int PD[N];
long long DR[N], MA2[N];
pair<long long,int>MA1[N];
vector<pair<int,int>>g[N];
void dfs(int v){
odw[v]=1;
//cout<<v;
for(pair<int,int> i:g[v]){
if(odw[i.F]==0) {
dfs(i.F);
PD[v]+=PD[i.F];
if(PD[i.F]!=0) DR[v]+=DR[i.F]+i.S;
if(MA1[v].F<=MA1[i.F].F+i.S&&PD[i.F]!=0){
MA2[v]=MA1[v].F;
MA1[v].F=MA1[i.F].F+i.S;
MA1[v].S=i.F;
}
else if(MA2[v]<MA1[i.F].F+i.S&&PD[i.F]!=0) MA2[v]=MA1[i.F].F+i.S;
}
//if(v==2) cout<<PD[v];
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m,u,v,w;
cin>>n>>m;
for(int i=1;i<n;i++){
cin>>u>>v>>w;
g[u].PB({v,w});
g[v].PB({u,w});
}
for(int i=0;i<m;i++){
cin>>u;
PD[u]++;
}
dfs(1);
//for(int i=1;i<=n;i++) cout<<PD[i]<<" ";
cout<<2*DR[1]-MA1[1].F;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBGIGZpcnN0IAojZGVmaW5lIFBCIHB1c2hfYmFjawp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgY29uc3QgTj0xZTYrMTsKYm9vbCBvZHdbTl07CmludCBQRFtOXTsKbG9uZyBsb25nIERSW05dLCBNQTJbTl07CnBhaXI8bG9uZyBsb25nLGludD5NQTFbTl07CnZlY3RvcjxwYWlyPGludCxpbnQ+PmdbTl07Cgp2b2lkIGRmcyhpbnQgdil7CglvZHdbdl09MTsKCS8vY291dDw8djsKCWZvcihwYWlyPGludCxpbnQ+IGk6Z1t2XSl7CgkJaWYob2R3W2kuRl09PTApIHsKCQkJZGZzKGkuRik7CgkJUERbdl0rPVBEW2kuRl07CgkJaWYoUERbaS5GXSE9MCkgRFJbdl0rPURSW2kuRl0raS5TOwoJCWlmKE1BMVt2XS5GPD1NQTFbaS5GXS5GK2kuUyYmUERbaS5GXSE9MCl7CgkJCU1BMlt2XT1NQTFbdl0uRjsKCQkJTUExW3ZdLkY9TUExW2kuRl0uRitpLlM7CgkJCU1BMVt2XS5TPWkuRjsKCQl9CgkJZWxzZSBpZihNQTJbdl08TUExW2kuRl0uRitpLlMmJlBEW2kuRl0hPTApIE1BMlt2XT1NQTFbaS5GXS5GK2kuUzsKCX0KCQkvL2lmKHY9PTIpIGNvdXQ8PFBEW3ZdOwoJfQoKfQoKaW50IG1haW4oKSB7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwoJY2luLnRpZSgwKTsKCWludCBuLG0sdSx2LHc7CgljaW4+Pm4+Pm07Cglmb3IoaW50IGk9MTtpPG47aSsrKXsKCQljaW4+PnU+PnY+Pnc7CgkJZ1t1XS5QQih7dix3fSk7CgkJZ1t2XS5QQih7dSx3fSk7Cgl9Cglmb3IoaW50IGk9MDtpPG07aSsrKXsKCQljaW4+PnU7CgkJUERbdV0rKzsKCX0KCWRmcygxKTsKCS8vZm9yKGludCBpPTE7aTw9bjtpKyspIGNvdXQ8PFBEW2ldPDwiICI7Cgljb3V0PDwyKkRSWzFdLU1BMVsxXS5GOwp9