题目背景
(其实这题原来叫 I must say No,不过出于某些显然的原因就改题目名了 /kk)
You must say Yes.
(题目背景图片来自 Phigros 曲绘,如有侵权,请告知出题人。)
题目描述
小 R 有一个长度为 n 的排列 p1…pn。换句话说,p1…pn 包含 0∼(n−1) 之间的数,并且满足对于 0∼(n−1) 这 n 个数,每个数在 p 中出现且仅出现一次。
小 R 有 n 个限制,其中第 i(0≤i≤n−1) 个用一个正整数 Li 描述,表示至少有一个长度为 Li 的区间 [l,r](即 r−l+1=Li)满足 mexk=lrpk=i。
小 R 丢失了排列 p1…pn,不过幸运的是她仍然记得这 n 条限制。请你帮她求出总共有多少个初始的合法排列,答案对 998244353 取模。
输入格式
本题每个测试点有多组数据。
第一行一个整数 T 表示数据组数。对于每组数据:
- 第一行一个整数 n。
- 第二行 n 个整数依次表示 L0…Ln−1。
输出格式
共 T 行,每行一个整数表示答案。
4
4
1 1 3 3
5
2 1 3 3 4
6
1 1 2 5 4 5
10
3 2 3 4 7 6 8 8 8 9
4
12
8
96
提示
定义
- 一个序列的 mex 是其中没有出现过的最小非负整数,如 mex{1,3,4}=0,mex{0,1,1,2,5}=3,mex{3,1,0,2}=4。
数据规模与约定
- Subtask 0(10 pts):n≤10。
- Subtask 1(30 pts):n≤18。
- Subtask 2(15 pts):n≤300。
- Subtask 3(45 pts):无特殊限制。
对于所有数据,1≤T≤10,1≤n≤5×103,1≤Li≤n。