#P1027. 失序(disorder)

失序(disorder)

Statement

小 L 的生日快到了,作为好朋友,小 Q 打算送出一件名叫 Clever Branch 的礼物。

Clever Branch 是一棵有 NN 个节点的有根二叉树(根不一定为 11),节点的两个儿子是有顺序的,且可以为空。

然而就在生日的前一天,mazihang2022 闯入了小 Q 家把他打晕后偷走了 Clever Branch。等小 Q 醒来,已经是 23:59:58 了。作为 OIer,小 Q 想起似乎只要得到二叉树的两种序就能还原出这棵树,于是他花了 0.5s0.5\operatorname{s} 的时间回忆起了 Clever Branch 的前序遍历和后序遍历。这时学艺不精的小 Q 才发现他还需要中序遍历。于是他又花了 0.5s0.5\operatorname{s} 时间回忆起了 Clever Branch 的中序遍历。然而,连续的高强度计算使小 Q 内存爆炸,因此中序遍历的一些位置丢失了。距离小 L 生日还剩 1s1\operatorname{s},他已经没有任何的精力计算了,于是请求你求出有多少种不同的二叉树可以是 Clever Branch。由于如果数量太多就没有意义了,你只需要得到这个数量模 998244353998244353 后的结果。

Input

第一行输入一个正整数 NN 表示 Clever Branch 的大小。

第二行输入 NN 个正整数 AiA_i 表示 Clever Branch 的前序遍历。

第三行输入 NN 个正整数 BiB_i 表示 Clever Branch 的后序遍历。

第四行输入 NN 个非负整数 CiC_i 表示 Clever Branch 的中序遍历,其中 Ci=0C_i=0 表示第 ii 个位置的值丢失了。

Output

输出一行一个整数表示可能成为 Clever Branch 的二叉树数量模 998244353998244353 的值。

Sample Input 1

2
1 2
2 1
0 0

Sample Output 1

2

Sample Explanation 1

22 可以是 11 的左儿子或右儿子。

Sample Input 2

5
5 4 1 2 3 
1 2 4 3 5 
1 0 0 0 0 

Sample Output 2

1

Sample Explanation 2

只有以下一种可能的结果:

    5
   / \
  4   3
 / \
1   2

Sample Input 3

8
3 5 1 8 7 6 4 2 
6 7 2 4 8 1 5 3 
0 0 6 7 0 2 0 0 

Sample Output

3

Sample Input 4

disorder_sample4.indisorder_sample4.out

满足测试点 4,5,64, 5, 6 的数据范围。

Sample Input 5

disorder_sample5.indisorder_sample5.out

满足测试点 132013\sim 20 的数据范围。

Constraints

对于 100%100\% 的数据,满足 1N2×1051\le N\le 2\times 10^5,保证至少存在一棵可能的 Clever Branch。

测试点 11N10N\le 10
测试点 2,32, 3N20N\le 20
测试点 4,5,64, 5, 6N5000N\le 5000
测试点 7,87, 8Ci=0C_i = 0
测试点 9,10,11,129,10,11,12[Ci=0]50\sum [C_i = 0] \le 50
测试点 132013\sim 20:无特殊限制。