Problem11171--色带

11171: 色带

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 512 MiB

Description

加密技术大赛马上要开始了,小明在做赛场上用的一个横幅,这是一个技术感很强的横幅。

横幅有 $n$ 个大小一样的白色方格,方格上要储存 $k$ 个整数,依次为 $A_1,A_2,...,A_k$。储存一个 $A_i$ 的信息,就是要将连续的 $A_i$ 块方格涂黑,并且保证左右两边(如果不是边界)都是白色的方格。储存的信息必须按照顺序,不多不少,也就是第一个连续黑色方格是 $A_1$ 块,第二个连续黑色方格块是 $A_2$ 块,以此类推,最后一个连续黑色方格块是 $A_k$ 块。

例如,当 $N=8$ 时,如果要储存一个整数 $7$,那么有如下两种方式:

■■■■■■■□

□■■■■■■■

当 $N=8$ 时,如果要储存两个整数 $2,4$,那么有如下三种方式:

■■□■■■■□
■■□□■■■■
□■■□■■■■

特别的,如果 $k=1$ 并且 $A_1=0$,那么一个黑格都不涂是唯一的方式。当 $k>1$ 时,保证所有的 $Ai>0$。

现在小明想知道,一共有多少种方式可以做出满足要求的横幅。由于答案可能很大,只需要输出 $\bmod\ 10^9+7$ 的结果。如果无论如何不能做出满足要求的横幅,输出 NA

Input

第一行一个整数 $n$。

第二行 $k$ 个整数,依次为 $A_1,A_2,...,A_k$。

Output

一个整数,表示答案。由于答案可能很大,只需要输出 $\bmod\ 10^9+7$ 的结果。如果无论如何不能做出满足要求的横幅,输出 NA

Constraints

对于 4% 的数据,$k=1$。
对于 20% 的数据,$n≤500,\ k≤100$。
对于 40% 的数据,$n≤10000,\ k≤150$。
对于 100% 的数据,$1≤n≤10^6,\ A_i≥0$,如果 $k>1$ 那么 $Ai>0,\ A_1+A_2+...+A_k≤n$。

Sample 1 Input

10
7 1

Sample 1 Output

3
■■■■■■■□■□
■■■■■■■□□■
□■■■■■■■□■

Sample 2 Input

12345
0

Sample 2 Output

1

Sample 3 Input

10
3 3 3

Sample 3 Output

NA

654321
100 90 80 70 60 40 30 20 10 1 2 3 4 5 6 7 8 9 50

269216225

Source/Category