题目背景
一个风和日丽的早晨,小 S 带着他的好朋友小 A 在小树林里面数树。
看着满树林的树,小 S 灵感一闪,想到了一道题目。
Suddenly, Little S thought of a supercalifragilisticexpialidocious problem.He wanted Little A to answer it.
题目描述
现在有 n 个点,每个点有一个权值 vi。
小 S 想要小 A 从中选一些点组成一个集合,设集合 S={d1,d2,…,dm}(1≤m≤n)。
当然,小 A 还需要保证这些点能形成一颗树,且 di 的度数为 vdi(i∈[1,m])。
小 S 想问小 A 有多少种满足条件的方案。
小 A 深知自己肯定不会这道题目,所以他就拿来问你了。
由于方案数可能很大,所以请对 998244353 取模。
输入格式
第一行,一个整数 n。
第二行,n 个整数 v1,v2,…,vn
输出格式
一行一个整数,表示方案数。
提示
样例说明

数据范围与约定
本题使用捆绑测试。
Subtask 编号 |
n≤ |
特殊性质 |
得分 |
1 |
20 |
无 |
11 |
2 |
50 |
12 |
3 |
300 |
10 |
4 |
2500 |
17 |
5 |
4×104 |
6 |
6 |
3×105 |
vi≤3 |
8 |
7 |
数据随机 |
7 |
8 |
5×105 |
无 |
29 |
对于 100% 的数据,2≤n≤5×105, 1≤vi≤n。
Subtask 7 中“数据随机”指:对于所有 vi,31 的概率为 1,32 的概率为 [2,n] 中等概率选择一个数。
对于前 4 个 Subtask,时间限制 1s。
对于第 5 个 Subtask,时间限制 3s。
对于后 3 个 Subtask,时间限制 6s。
对于所有测试点,空间限制 256MB。