#P5860. 「SWTR-3」Counting Trees

「SWTR-3」Counting Trees

题目背景

一个风和日丽的早晨,小 S\mathrm{S} 带着他的好朋友小 A\mathrm{A} 在小树林里面数树。

看着满树林的树,小 S\mathrm{S} 灵感一闪,想到了一道题目。


$$\mathrm{Suddenly,\ Little\ S\ thought\ of\ a\ supercalifragilisticexpialidocious\ problem.} $$He wanted Little A to answer it.\mathrm{He\ wanted\ Little\ A\ to\ answer\ it.}

题目描述

现在有 nn 个点,每个点有一个权值 viv_i

S\mathrm{S} 想要小 A\mathrm{A} 从中选一些点组成一个集合,设集合 S={d1,d2,,dm}(1mn)S=\{d_1,d_2,\dots,d_m\}(1\leq m\leq n)

当然,小 A\mathrm{A} 还需要保证这些点能形成一颗树,且 did_i 的度数为 vdi(i[1,m])v_{d_i}(i\in[1,m])

  • 节点的度数:与它相邻的节点的个数。

S\mathrm{S} 想问小 A\mathrm{A} 有多少种满足条件的方案。

A\mathrm{A} 深知自己肯定不会这道题目,所以他就拿来问你了。

由于方案数可能很大,所以请对 998244353998244353 取模。

输入格式

第一行,一个整数 nn

第二行,nn 个整数 v1,v2,,vnv_1,v_2,\dots,v_n

输出格式

一行一个整数,表示方案数。

3
1 1 1

3
5
1 2 1 3 1

8
8
1 2 1 2 4 1 3 1

44
50
8 1 10 2 2 1 2 1 1 2 5 1 11 6 13 13 10 4 1 13 11 2 2 11 13 10 1 1 4 3 4 2 15 2 2 1 1 2 1 7 14 2 2 4 13 2 7 5 6 10 
176873472

提示


样例说明

  • 对于样例 11,在三个节点中任选两个即可,答案为 C32=3C^{2}_{3}=3

  • 对于样例 22,如图,共有 88 种选择节点的方法。


数据范围与约定

本题使用捆绑测试。

Subtask 编号 nn\leq 特殊性质 得分
11 2020 1111
22 5050 1212
33 300300 1010
44 25002500 1717
55 4×1044\times 10^4 66
66 3×1053\times 10^5 vi3v_i\leq 3 88
77 数据随机 77
88 5×1055\times 10^5 2929

对于 100%100\% 的数据,2n5×1052 \leq n \leq 5 \times 10^5 1vin\ 1 \leq v_i \leq n


Subtask 7\mathrm{Subtask\ 7} 中“数据随机”指:对于所有 viv_i13\frac{1}{3} 的概率为 1,23\frac{2}{3} 的概率为 [2,n][2,n] 中等概率选择一个数。


对于前 44Subtask\mathrm{Subtask},时间限制 1s1\mathrm{s}

对于第 55Subtask\mathrm{Subtask},时间限制 3s3\mathrm{s}

对于后 33Subtask\mathrm{Subtask},时间限制 6s6\mathrm{s}

对于所有测试点,空间限制 256MB256\mathrm{MB}