OI XXIV - str

// 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;
}