#include <iostream>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <vector>
#define MAX 100000
using namespace std;
long close=0;
long minb=MAX;
vector< vector<long> > a(100000);
//long a[MAX][MAX];
//int b[MAX];
//long long int v[MAX];
long v=0;
vector<long> zali;
//int p[MAX];
long vmin=0;
long n,m,k;
void input()
{
    int b,c,d,z;
    while((n<3 || n>100000) && (k<2 || k>100000))
    cin >> n  >> k;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            a[i].push_back(0);
//    v[i]=0;
 //   b[i]=0;
 //   p[i]=0;
    }
    for(int r=0;r<n-1;r++)
    {
        cin >> b >> d >> c;
        a[b-1][d-1]=c;
        a[d-1][b-1]=c;
    }
    for(int q=0;q<k;q++)
{
    cin >> z;zali.push_back(z-1);
}
}
void way(int i,int j)
{
if(i==j)
{
if(vmin>v || vmin==0) vmin=v;
}
if(a[i][j]!=0) if(vmin>a[i][j] || vmin==0) vmin=a[i][j];
else
{
for(int k=0;k<n;k++)
if(a[i][k]!=0)
{
v+=a[i][k];
long y=a[i][k];
a[i][k]=0;a[k][i]=0;
way(k,j);
a[i][k]=y;a[k][i]=y;
v-=a[i][k];
}
}
}
void solve()
{
   for(long i=0;i<n;i++)
{
close=i;
minb=MAX;
vmin=MAX;
    for(long j=0;j<k;j++)
   {
    if(i!=zali[j] && zali[j]!=0)
    way(i,zali[j]);
    if(minb>vmin)
    {
        minb=vmin;
        close=j+1;
    }
   }
    cout << close << " " << minb << endl;
}
}
int main()
{
    input();
    solve();
    system("PAUSE");
    return 0;
}
