#include <iostream>
#include <vector>
using namespace std;
vector< vector<int> > G;
vector<char> isP;
int K;
int dfs2(int v, int p, int l){
int res = 0;
for (auto next : G[v])
if (next !=p)
res+=dfs2(next,v, l+1);
if (isP[v])
res+=l;
return res;
}
int dfs(int v, int p){
int res = isP[v];
for (auto next : G[v])
if (next !=p)
res+=dfs(next,v);
if (res > K/2){
cout << dfs2(v,-1,0)<<" "<<v<<endl;
exit(0);
}
return res;
}
int main() {
// your code goes here
int N;
cin >> N >> K;
G.resize(N);
isP.resize(N);
for (int _=1; _ < N; _++){
int a,b;
cin >> a >> b;
a--;
b--;
G[a].push_back(b);
G[b].push_back(a);
}
for (int _ = 0; _ < K; _++){
int a;
cin >> a;
isP[a-1] = 1;
}
dfs(0,-1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPCB2ZWN0b3I8aW50PiA+IEc7CnZlY3RvcjxjaGFyPiBpc1A7CmludCBLOwoKaW50IGRmczIoaW50IHYsIGludCBwLCBpbnQgbCl7CglpbnQgcmVzID0gMDsKCWZvciAoYXV0byBuZXh0IDogR1t2XSkKCQlpZiAobmV4dCAhPXApCgkJCXJlcys9ZGZzMihuZXh0LHYsIGwrMSk7CglpZiAoaXNQW3ZdKQoJCXJlcys9bDsKCXJldHVybiByZXM7Cn0KCgppbnQgZGZzKGludCB2LCBpbnQgcCl7CglpbnQgcmVzID0gaXNQW3ZdOwoJZm9yIChhdXRvIG5leHQgOiBHW3ZdKQoJCWlmIChuZXh0ICE9cCkKCQkJcmVzKz1kZnMobmV4dCx2KTsKCWlmIChyZXMgPiBLLzIpewoJCWNvdXQgPDwgZGZzMih2LC0xLDApPDwiICI8PHY8PGVuZGw7CgkJZXhpdCgwKTsKCX0KCXJldHVybiByZXM7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IE47CgljaW4gPj4gTiA+PiBLOwoJRy5yZXNpemUoTik7Cglpc1AucmVzaXplKE4pOwoJZm9yIChpbnQgXz0xOyBfIDwgTjsgXysrKXsKCQlpbnQgYSxiOwoJCWNpbiA+PiBhID4+IGI7CgkJYS0tOwoJCWItLTsKCQlHW2FdLnB1c2hfYmFjayhiKTsKCQlHW2JdLnB1c2hfYmFjayhhKTsKCX0KCWZvciAoaW50IF8gPSAwOyBfIDwgSzsgXysrKXsKCQlpbnQgYTsKCQljaW4gPj4gYTsKCQlpc1BbYS0xXSA9IDE7Cgl9CglkZnMoMCwtMSk7CglyZXR1cm4gMDsKfQ==