#P1005. 计算机网络

计算机网络

Problem Description

你在设计一个非常大的计算机网络,其中有nn个设备,每个设备互不相同,标号从11到nn,任意两个设备之间都有一条线路将这两个设备连接,所以总共有n∗(n−1)2\frac{n*(n-1)}{2}条线路。

由于一些问题,每条线路都是单向的,数据只能从一个设备传到另一个设备中,尽管如此,这个计算机网络中还是可能会存在一些环,一个环由若干个设备首尾相连形成,一个环的大小是这个环中点的个数。

在设计网络的过程中,甲方总共向你提了kk个要求,第ii个要求给你一个值aia_i,代表图中必须出现大小恰好为aia_i的环。

你想知道,总共能有多少种不同的计算机网络满足甲方给定的要求,由于这个数字可能很大,你需要对998244353998244353取模后输出。

Input Format

第一行输入两个数字nn,kk,代表nn个点,kk个要求。

第二行kk个数aia_i,代表kk个要求。

Output Format

一行一个整数,代表方案数对998244353998244353取模。

Sample

样例输入1

3 1
3

样例输出1

2

样例1解释:共两种方案:1->2->3->1 和 3->2->1->3

样例输入2

4 2
3 4

样例输出2

24

Hint

3≤n≤1053\leq n\leq 10^5

1≤k≤n−11\leq k \leq n-1

2≤ai≤n2\leq a_i\leq n

保证所有aia_i互不相同