题目描述
数学社的 Lio 写下了两个 1 到 n 的排列 p 和 q,并声称它们能生成许多“玩笑字符串”。后来他把排列 q 的一部分擦掉了,只留下了一些确定的位置。
先定义什么是可满足的二进制字符串。
给定两个排列 p,q,一个长度为 n 的二进制字符串 s 被称为可满足的,当且仅当存在一个 2×n 的矩阵 a,满足:
- 从 1 到 2n 的每个整数都在矩阵中恰好出现一次;
- 第一行元素的大小顺序与排列 p 一致,即对所有 1≤i<j≤n,
a1,i<a1,j⟺pi<pj;
- 第二行元素的大小顺序与排列 q 一致,即对所有 1≤i<j≤n,
a2,i<a2,j⟺qi<qj;
- 对每个 1≤i≤n,上下两格大小关系由 si 决定:
a1,i<a2,i⟺si=0.
记 f(p,q) 为对排列 p,q 可满足的二进制字符串 s 的数量。
现在给定排列 p 的全部元素,以及排列 q 的部分元素。若 qi=0,表示该位置的值已经遗失;否则 qi 是已知值。
请计算所有符合已知信息的排列 q 的 f(p,q) 之和,并对 998244353 取模。
输入格式
第一行包含一个整数 n。
第二行包含 n 个整数 p1,p2,…,pn,表示一个 1 到 n 的排列。
第三行包含 n 个整数 q1,q2,…,qn。若 qi=0,表示该位置值已知;若 qi=0,表示该位置值遗失。
所有已知的 qi 两两不同。
输出格式
输出一行一个整数,表示所有合法排列 q 的 f(p,q) 之和,对 998244353 取模。
数据范围
- 1≤n≤100;
- 1≤pi≤n,且 p 是一个排列;
- 0≤qi≤n;
- 所有非零的 qi 两两不同。
样例 1
输入
2
1 2
2 1
输出
3
样例 2
输入
4
4 3 2 1
4 3 2 1
输出
16
样例 3
输入
5
1 2 3 4 5
0 0 0 0 0
输出
1546
样例 4
输入
6
1 6 2 5 3 4
0 1 0 2 0 3
输出
52