#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 500005;
vector<int> adj[MAXN];
int parent[MAXN];
int degree[MAXN];
int striking_children[MAXN];
bool is_striking[MAXN];
int n, m;
// Budujemy strukturę drzewa (wyznaczamy rodziców)
void dfs(int u, int p) {
parent[u] = p;
for (int v : adj[u]) {
if (v != p) {
dfs(v, u);
}
}
}
int main() {
// Szybkie wejście/wyjście
ios_base::sync_with_stdio(false);
cin.tie(NULL);
if (!(cin >> n)) return 0;
for (int i = 0; i < n - 1; ++i) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
degree[u]++;
degree[v]++;
}
// Ukorzeniamy drzewo w wierzchołku 1
dfs(1, 0);
cin >> m;
int components = 1; // Na początku sieć jest spójna
while (m--) {
int z;
cin >> z;
int v = (z > 0 ? z : -z);
bool starting_strike = (z > 0);
// Obliczamy liczbę aktywnych sąsiadów
int active_children = (v == 1 ? degree[v] : degree[v] - 1) - striking_children[v];
int parent_active = (v == 1 || is_striking[parent[v]]) ? 0 : 1;
int active_neighbors = active_children + parent_active;
if (starting_strike) {
// Rozpoczyna strajk
components += (active_neighbors - 1);
is_striking[v] = true;
if (v != 1) {
striking_children[parent[v]]++;
}
} else {
// Kończy strajk
components -= (active_neighbors - 1);
is_striking[v] = false;
if (v != 1) {
striking_children[parent[v]]--;
}
}
cout << components << "\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhOID0gNTAwMDA1Owp2ZWN0b3I8aW50PiBhZGpbTUFYTl07CmludCBwYXJlbnRbTUFYTl07CmludCBkZWdyZWVbTUFYTl07CmludCBzdHJpa2luZ19jaGlsZHJlbltNQVhOXTsKYm9vbCBpc19zdHJpa2luZ1tNQVhOXTsKaW50IG4sIG07CgovLyBCdWR1amVteSBzdHJ1a3R1csSZIGRyemV3YSAod3l6bmFjemFteSByb2R6aWPDs3cpCnZvaWQgZGZzKGludCB1LCBpbnQgcCkgewogICAgcGFyZW50W3VdID0gcDsKICAgIGZvciAoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICBpZiAodiAhPSBwKSB7CiAgICAgICAgICAgIGRmcyh2LCB1KTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgLy8gU3p5YmtpZSB3ZWrFm2NpZS93eWrFm2NpZQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGlmICghKGNpbiA+PiBuKSkgcmV0dXJuIDA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgKytpKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7CiAgICAgICAgZGVncmVlW3VdKys7CiAgICAgICAgZGVncmVlW3ZdKys7CiAgICB9CgogICAgLy8gVWtvcnplbmlhbXkgZHJ6ZXdvIHcgd2llcnpjaG/Fgmt1IDEKICAgIGRmcygxLCAwKTsKCiAgICBjaW4gPj4gbTsKICAgIGludCBjb21wb25lbnRzID0gMTsgLy8gTmEgcG9jesSFdGt1IHNpZcSHIGplc3Qgc3DDs2puYQoKICAgIHdoaWxlIChtLS0pIHsKICAgICAgICBpbnQgejsKICAgICAgICBjaW4gPj4gejsKICAgICAgICBpbnQgdiA9ICh6ID4gMCA/IHogOiAteik7CiAgICAgICAgYm9vbCBzdGFydGluZ19zdHJpa2UgPSAoeiA+IDApOwoKICAgICAgICAvLyBPYmxpY3phbXkgbGljemLEmSBha3R5d255Y2ggc8SFc2lhZMOzdwogICAgICAgIGludCBhY3RpdmVfY2hpbGRyZW4gPSAodiA9PSAxID8gZGVncmVlW3ZdIDogZGVncmVlW3ZdIC0gMSkgLSBzdHJpa2luZ19jaGlsZHJlblt2XTsKICAgICAgICBpbnQgcGFyZW50X2FjdGl2ZSA9ICh2ID09IDEgfHwgaXNfc3RyaWtpbmdbcGFyZW50W3ZdXSkgPyAwIDogMTsKICAgICAgICBpbnQgYWN0aXZlX25laWdoYm9ycyA9IGFjdGl2ZV9jaGlsZHJlbiArIHBhcmVudF9hY3RpdmU7CgogICAgICAgIGlmIChzdGFydGluZ19zdHJpa2UpIHsKICAgICAgICAgICAgLy8gUm96cG9jenluYSBzdHJhamsKICAgICAgICAgICAgY29tcG9uZW50cyArPSAoYWN0aXZlX25laWdoYm9ycyAtIDEpOwogICAgICAgICAgICBpc19zdHJpa2luZ1t2XSA9IHRydWU7CiAgICAgICAgICAgIGlmICh2ICE9IDEpIHsKICAgICAgICAgICAgICAgIHN0cmlraW5nX2NoaWxkcmVuW3BhcmVudFt2XV0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEtvxYRjenkgc3RyYWprCiAgICAgICAgICAgIGNvbXBvbmVudHMgLT0gKGFjdGl2ZV9uZWlnaGJvcnMgLSAxKTsKICAgICAgICAgICAgaXNfc3RyaWtpbmdbdl0gPSBmYWxzZTsKICAgICAgICAgICAgaWYgKHYgIT0gMSkgewogICAgICAgICAgICAgICAgc3RyaWtpbmdfY2hpbGRyZW5bcGFyZW50W3ZdXS0tOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IGNvbXBvbmVudHMgPDwgIlxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==