## https://yukicoder.me/problems/no/2618 def main(): N = int(input()) next_nodes = [[] for _ in range(N)] for _ in range(N - 1): a, b = map(int, input().split()) next_nodes[a - 1].append(b - 1) next_nodes[b - 1].append(a - 1) M = int(input()) V = list(map(int, input().split())) ghost_magic_num = [0] * N for v in V: ghost_magic_num[v - 1] += 1 for w in next_nodes[v - 1]: ghost_magic_num[w] += 1 next_effectives = [{} for _ in range(N)] for v in V: ans = 0 for w in next_nodes[v - 1]: if ghost_magic_num[w] == 1: ans += 1 for w in next_nodes[v - 1]: if ghost_magic_num[w] == 1: next_effectives[v - 1][w] = ans - 1 else: next_effectives[v - 1][w] = ans base_answer = 0 for i in range(N): if ghost_magic_num[i] > 0: base_answer += 1 v_set = set(V) for i in range(N): ans = base_answer eff_flags = set() if (i + 1) in v_set: for w in next_nodes[i]: ghost_magic_num[w] -= 1 eff_flags.add(w) if ghost_magic_num[i] > 0: ans -= 1 for w in next_nodes[i]: if (w + 1) in v_set: if ghost_magic_num[w] == 1: ans -= 1 ans -= next_effectives[w][i] else: if ghost_magic_num[w] == 0 and w in eff_flags: ans -= 1 print(ans) if (i + 1) in v_set: for w in next_nodes[i]: ghost_magic_num[w] += 1 if __name__ == "__main__": main()