#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0;i<(n);i++) const LL INF = 1000000000000000000; struct Edge{ int to; LL d;}; int N,Q; LL C; vector E[3000]; int X[3000]; LL D[3000][3000]; LL P[3000][3000]; vector order[3000]; int main(){ scanf("%d%d%lld",&N,&Q,&C); rep(i,N-1){ int u,v; LL d; scanf("%d%d%lld",&u,&v,&d); u--; v--; E[u].push_back({v,d}); E[v].push_back({u,d}); } rep(i,Q){ scanf("%d",&X[i]); X[i]--; } rep(i,N) rep(j,N) D[i][j]=P[i][j]=-1; rep(s,N){ auto& Q = order[s]; D[s][s]=0; Q.push_back(s); for(int i=0; i