#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<vector<int>> g(n);
for (int i = 1, u, v; i < n; ++i) {
cin >> u >> v, --u, --v;
g[u].push_back(v);
g[v].push_back(u);
}
vector<int> d(n, -1);
queue<int> qu;
while (k--) {
int u;
cin >> u, --u;
d[u] = 0;
qu.push(u);
}
vector<int> ans, mx(n);
auto dfs = [&](auto &&self, int u, int p) -> char {
mx[u] = -1;
char f = !d[u];
for (int to : g[u]) {
if (to ^ p) {
f |= self(self, to, u);
mx[u] = max(mx[u], mx[to] - 1);
}
}
if (f && mx[u] == d[u])
f = 0;
if (f && (!~p || d[p] <= d[u])) {
f = 0;
mx[u] = d[u];
ans.push_back(u);
}
return f;
};
while (qu.size()) {
int u = qu.front();
qu.pop();
for (int to : g[u]) {
if (!~d[to]) {
d[to] = d[u] + 1;
qu.push(to);
}
}
}
dfs(dfs, 0, -1);
cout << ans.size() << "\n";
for (int i : ans) {
cout << i + 1 << " ";
}
return 0;
}