Bitotia 的公民以脾气火爆和对民主的热爱而闻名(与保皇派 Bytotia 平静祥和的臣民形成鲜明对比)。每当他们感到有必要表达对政府决策(例如增加字节中的位数)的不满或支持(例如使 RAM 和缓存相等)时,他们就会聚集在街上进行罢工。
Bitotia 有 $n$ 个城镇。每个城镇的公民独立决定开始或结束罢工。一旦罢工开始,该城镇就会完全瘫痪,无法进入或离开。不幸的是,Bitotia 的道路网络设计非常简约,即对于每一对城镇,都有且仅有一条路径可以从一个城镇到达另一个城镇。因此,罢工往往会使未罢工的城镇之间断开连接。更正式地说,当前罢工的城市集合将剩余的城市划分为若干个连通分量,使得两个城镇(均未罢工)连通,当且仅当它们处于同一个连通分量中。
作为 Bitotia 的交通专员,你的任务是编写一个程序,根据当前正在进行的罢工的最新信息,确定道路网络的连通分量数量。
Bitotia 的所有道路都是双向的,每条道路的两端都在某个城镇。
输入格式
标准输入的第一行包含一个整数 $n$ ($n \ge 2$),表示 Bitotia 的城镇数量。城镇编号为 $1$ 到 $n$。接下来的 $n-1$ 行,每行包含两个整数 $a$ 和 $b$ ($1 \le a < b \le n$),表示由该路段直接相连的两个城市的编号。Bitotia 中的每一对城镇都通过由若干直接路段组成的路径相连。
下一行包含一个整数 $m$ ($m \ge 1$),表示罢工更新的次数。接下来的 $m$ 行,每行包含一个整数 $z$,满足 $1 \le |z| \le n$。如果 $z > 0$,则表示编号为 $z$ 的城镇开始罢工;如果 $z < 0$,则表示编号为 $-z$ 的城镇结束罢工。你可以假设在任何时候,每个城镇要么没有罢工,要么恰好有一次罢工;正式地说,罢工不能在已经有罢工的城镇开始,同样,罢工也不能在没有罢工的城镇结束。最初,没有任何城镇发生罢工。
输出格式
你的程序应向标准输出打印 $m$ 行。第 $i$ 行(对于 $1 \le i \le m$)应包含一个整数,等于输入中第 $i$ 次更新后 Bitotia 道路网络的连通分量数量。当所有城镇的公民都在罢工时,连通分量数量为 $0$。
样例
输入 1
7 1 2 2 3 2 4 4 5 4 6 6 7 4 2 7 4 -2
输出 1
3 3 4 3
说明
该图描绘了 2 号和 7 号城镇开始罢工后的 Bitotia 道路网络。网络分裂成了三个连通分量。
子任务
测试集由以下子任务组成。每个子任务内可能包含多个测试组。
| 子任务 | 属性 | 分值 |
|---|---|---|
| 1 | $n, m \le 1000$ | 24 |
| 2 | $n, m \le 500\,000$,道路网络为一条路径 | 17 |
| 3 | $n, m \le 500\,000$,输入中的所有数字均为正数 | 17 |
| 4 | $n, m \le 500\,000$ | 42 |
注:如果对于每个 $a = 1, \dots, n-1$,编号为 $a$ 和 $a+1$ 的城镇直接相连,则称道路网络为一条路径。