// https://szkopul.edu.pl/problemset/problem/lR_LabSUC2n7EMmDHpw-wk_b/site/?key=statement
// Strajki
#include <bits/stdc++.h>
using namespace std;
constexpr int sizik = 1000 * 1001;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef long long ll;
typedef vec<vec<int>> _kra;
vec<int> kra[sizik];
ar<int, sizik> parent, wyn, deleted;
void DFS(int v, int p) {
parent[v] = p;
wyn[v] = kra[v].size() - 1;
for (const auto& a : kra[v]) {
if (a != p) {
DFS(a, v);
}
}
}
void solve() {
int n;
std::cin >> n;
for (int i = 0; i < n - 1; i++) {
int a, b;
std::cin >> a >> b;
kra[a].push_back(b);
kra[b].push_back(a);
}
DFS(1, 1);
wyn[1]++;
int curr_ans = 1;
int m;
std::cin >> m;
for (; m > 0; m--) {
int a;
std::cin >> a;
a = abs(a);
int cnt = -1;
if (!deleted[a]) {
// usun a
cnt = 1;
deleted[a] = true;
} else {
deleted[a] = false;
}
curr_ans += cnt * (wyn[a] - 1);
if (a != parent[a] && !deleted[parent[a]]) {
curr_ans += cnt;
}
if (a != parent[a]) wyn[parent[a]] += -cnt;
std::cout << curr_ans << '\n';
}
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}