#P1025. 选举

选举

B - 选举

题目背景

And as you fight among the death beneath the dirt

Do you know yet

Do you want it

And when the giants call to ask you what you're worth

Do you know if

Win or die you'll

Prove yourself and

RISE RISE

题目描述

从前有一个村子在竞选村长。

给定每个人所在的家庭和希望得到的票数,每个人都需要投恰好一票给其他人,但不能投给自家人。你想知道:有多少投票方案使得每个人得到的票数都与其期望的相等。

形式化题意:

给定两个长度为 nn 的序列 t,ct,c ,你需要求有多少长度为 nn 的序列 pp 满足 :

  1. 1pin1\le p_i\le ntitpit_i\neq t_{p_i}

  2. 对于任意 1in1\le i\le nj[pj=i]=ci\sum\limits_{j} [p_j=i]=c_i

答案对 998244353998244353 取模。

输入格式

第一行一个整数 nn

接下来一行输入 nn 个整数,代表序列 cc

接下来一行输入 nn 个整数,代表序列 tt

输出格式

一行一个整数表示答案。

样例

样例输入

5
1 2 2 0 0
3 5 4 3 4

样例输出

5

数据范围

对于所有数据,n5000,1tin,0cin,c=nn\le 5000,1\le t_i\le n,0\le c_i\le n,\sum c=n

子任务 1 ( 10% ) : 1n51\le n\le 5

子任务 2 ( 20% ) : 对于任意 1in1\le i\le nti=it_i=i

子任务 3 ( 20% ) : n100n\le 100

子任务 4 ( 20% ) : n300n\le 300

子任务 5 ( 30% ) : 无特殊限制。