在阿拉木图大城市附近,有一座壮丽的山峰,吸引了许多徒步旅行者。这座山可以描述为一棵包含 $n$ 个节点的树$^\dagger$。树的每个节点都是一个平坦的表面,徒步旅行者可以在那里放松和休息。节点 1 是山顶,也是最终目的地。除了山顶外,从每个编号为 $v$ 的节点出发,都有一条向上的路径通往某个其他节点 $u < v$。因此,如果你从任何节点出发并持续向上走,最终都会到达山顶。这完全符合树的结构。
在一个美好的周日早晨,$m$ 个不同的徒步旅行者群体决定征服这座山。每个群体由目前占据山上一片连通区域的徒步旅行者组成。该区域可以正式描述为树的一个连通子图$^\dagger$。你知道目前还没有任何群体相遇,因此在特定的节点 $v$ 上,只能有属于同一个群体的成员。
时光流逝,群体正向山顶移动。他们的移动可以描述为 $q$ 个事件的序列。每个事件由树上的一个任意节点 $v$ 给定。当前位于 $v$ 下方$^\dagger$ 任何节点的每一位徒步旅行者,都会沿着路径向上移动,向树的更高处前进。注意,位于节点 $v$ 的徒步旅行者将停留在该节点。
在某个事件之后,来自不同群体的两个人可能会在同一个节点相遇。在这种情况下,这两个群体会互相认识,并从那一刻起作为一个单一的群体继续徒步旅行。
作为徒步旅行者移动的远方观察者,你感到很有趣的是,有些群体会很早相遇,而另一些群体可能直到到达山顶才会相遇。在 $q$ 个事件中的每一个事件之后,你都想知道:现在还有多少个不同的徒步旅行者群体?
$^\dagger$ 树是一个包含 $n$ 个节点和 $n-1$ 条边的连通无向图。 $^\dagger$ 树的连通子图是其节点的一个子集(群体),且该子集也构成一棵树。 $^\dagger$ 如果 $v$ 在从 $u$ 到山顶的路径上,则称节点 $u$ 位于节点 $v$ 的下方。
输入格式
第一行包含一个整数 $n$ —— 树的节点数,或者说是山上平坦表面的数量 ($3 \le n \le 3 \cdot 10^5$)。
第二行包含一个由 $n-1$ 个整数组成的序列 $p_2, \dots, p_n$。值 $p_i$ 表示节点 $i$ 的父节点,即从 $i$ 到山顶路径上的下一个节点 ($1 \le p_i < i$)。
下一行包含一个整数 $m$ —— 徒步旅行者群体的数量 ($2 \le m \le n$)。
接下来的 $m$ 行,每行描述一个群体。第一个整数 $k$ 是该群体的大小。随后是 $k$ 个整数 $l_1, \dots, l_k$,描述了每个群体成员的位置 ($1 \le k \le 3 \cdot 10^5, 1 \le l_i \le n$)。保证每个群体都占据树的一个有效的连通子图。同时保证所有占据同一个节点的徒步旅行者都属于同一个群体。
徒步旅行者的总数 $\sum k$ 不超过 $3 \cdot 10^5$。
下一行包含一个整数 $q$ —— 事件的数量 ($1 \le q \le 3 \cdot 10^5$)。
最后一行包含 $q$ 个整数 $v_1, \dots, v_q$ —— 描述每个事件的节点 ($1 \le v_i \le n$)。每个事件的详细描述见上文。
输出格式
你需要输出 $q$ 行,每行包含一个整数 —— 每次事件后不同群体的数量。
子任务
| 子任务 | 附加约束 | 分值 |
|---|---|---|
| 0 | 样例 | 0 |
| 1 | $n, q, \sum k \le 10^3$ | 12 |
| 2 | $p_i = \lfloor \frac{i}{2} \rfloor$ 且 $n = 2^k - 1$ (对于某个 $k$) | 13 |
| 3 | $p_i = i - 1$ | 18 |
| 4 | 所有事件中 $v_i = 1$ | 14 |
| 5 | $n, q, \sum k \le 10^5$ | 24 |
| 6 | — | 19 |
样例
输入 1
7 1 1 1 4 4 6 3 2 3 3 1 5 3 7 6 7 4 6 1 2 1
输出 1
3 2 2 1
输入 2
5 1 1 1 2 3 4 1 4 1 3 2 2 2 1 5 3 3 1 1
输出 2
3 2 1
说明
让我们分析第一个样例。下图展示了以树的形式表示的山。徒步旅行者被涂上不同的颜色以区分他们的群体。
从左到右的三张图片分别代表所有事件之前、第一次事件之后和第二次事件之后的状态。注意在最后一张图片中,两个不同的群体(图片中为蓝色和绿色)在节点 4 相遇了。在此之后,他们将作为一个单一的群体行进,因此不同群体的数量减少了 1,该事件的答案为 2。