#include<bits/stdc++.h>
using namespace std;

vector<int> edges[100005];
bool notFirst[100005], b[100005];
int ans[100005], c[100005];

void dfs(int i) {
    b[i] = true;
    if(edges[i].size() == 0) ans[i] = 0;
    for(auto c : edges[i]) {
        dfs(c);
        ans[i] += ans[c] + 1;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int n;
    cin>>n;
    for(int i = 0; i < n-1; i++) {
        int u, v;
        cin>>u>>v;
        edges[u].push_back(v);
        notFirst[v] = true;
    }

    int m;
    cin>>m;
    for(int i = 0; i < m; i++) {
        cin>>c[i];
    }

    for(int i = 1; i <= n; i++) {
        if(!notFirst[i]) {
            dfs(i);
            bool bb = true;
            for(int j = 0; j < m; j++) {
                if(!b[c[j]]) bb = false;
            }
            if(bb) {
                for(int j = 0; j < m; j++) {
                    cout<<ans[c[j]]<<endl;
                }
                return 0;
            }
        }
    }



    return 0;
}
