import sys sys.setrecursionlimit(10**7) mod = 10**9+7 def convolution(A, B): la = len(A) lb = len(B) res = [0]*(la+lb-1) for i, a in enumerate(A): for j, b in enumerate(B): res[i+j] += a*b res[i+j] %= mod return res def poly_mod(X, Q): a = len(X) b = len(Q) if a < b: return X for i in range(a-b, -1, -1): d = X[i+b-1] for j, q in enumerate(Q): X[i+j] -= q*d X[i+j] %= mod return X[:b-1] def poly_pow(C, n, Q): if n == 1: return C d = len(C) if n%2: res = convolution(poly_pow(C, n-1, Q), C) else: T = poly_pow(C, n//2, Q) res = convolution(T, T) res = poly_mod(res, Q) return res #[x^n]P/Qを求める def poly_coef(Q, P, n): C = [-q for q in Q[1:]] inv = pow(Q[-1], mod-2, mod) norm_Q = [q*inv%mod for q in Q] X = poly_pow(C, n, norm_Q) res = convolution(X, P) res = poly_mod(res, norm_Q) return res[0] k = int(input()) n = int(input()) A = tuple(map(int, input().split())) Q = [0]*(A[-1]+1) Q[0] = 1 for a in A: Q[a] = -1 P = [1] ans = poly_coef(Q, P, k) print(ans)