CSG-CPC
Online Judge

1236 : 生成树计数

         Time Limit: 1 Sec     Memory Limit: 256 Mb     Submitted: 14     Solved: 11    

Description

给定一个有 \(n\) 个节点的树,初始节点编号为从 \(1\)\(n\),再给定一个长度为 \(n-1\) 节点序列,我们将按照序列的顺序对树进行操作。

对于每个操作,如果当前要操作的节点是 \(x\),首先创建一个新节点,编号为 \(x+n\)。对于任意整数 \(i\in [1,n]\),如果边 \((x,i)\) 存在:

  • 如果节点 \(i+n\) 不存在,我们连接 \((x+n,i)\)

  • 如果节点 \(i+n\) 存在(在这种情况下,边 \((x,i+n)\) 总是存在的),我们连接 \((x+n,i+n)\) 并删除边 \((x,i+n)\)

对于每个操作后得到的新图,请计算其生成树的数量,并对 \(998244353\) 取模。

Input

第一行包含一个整数 \(n \; (1 \le n \le 5000)\),表示树的大小。

接下来的 \(n-1\) 行,每行包含两个数字 \(u\)\(v\;(1\le u,v\le n)\),表示树中的边 \((u,v)\)。保证输入形成一棵合法的树。

最后一行包含 \(n-1\)不同的数字 \(b_i\;(1 \le b_i \le n)\),表示按顺序进行操作的节点序列。

Output

输出 \(n-1\) 行,第 \(i\) 行输出一个整数表示执行完第 \(i\) 个操作后图中生成树的数量,答案对 \(998244353\) 取模。

Sample

5
1 2
1 3
2 4
2 5
1 5 2 3
4
4
6
1

Hint