Type: Default 2000ms 512MiB

计算机网络

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

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互不相同