#include <iostream>
#include <vector>

const int MX = 1e6 + 5;

int n, q;
std::vector<int> adj[MX];
int qry[MX];

int subtr[MX];
void dfs(int cur) {
    subtr[cur] = 1;
    for(int i = 0; i < adj[cur].size(); i++) {
        dfs(adj[cur][i]); subtr[cur] += subtr[adj[cur][i]];
    }
}

int main () {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(0);

    std::cin>>n;
    bool is_a_subord[n]; int a, b, i;
    for(i = 0; i < n - 1; i++) {
        std::cin>>a>>b;
        is_a_subord[b - 1] = true;
        adj[a].push_back(b);
    }
    int root;
    for(i = 0; i < n; i++) if (is_a_subord[i] == false) {
        root = i + 1; break;
    }
    dfs(root);

    std::cin>>q;
    for(i = 0; i < q; i++) {
        std::cin>>a;
        qry[i] = subtr[a] - 1;
    }
    for(i = 0; i < q; i++) {
        std::cout<<qry[i]<<"\n";
    }
    return 0;
}
/*
4
1 3
2 1
2 4
3
1
2
4

*/
