import bisect MOD = 10**9 + 7 K = int(input()) N = int(input()) x = list(map(int, input().split())) # Find valid step sizes up to K idx = bisect.bisect_right(x, K) valid_x = x[:idx] m = len(valid_x) if m == 0: print(0) exit() dp = [0] * (K + 1) dp[0] = 1 # Base case: one way to be at step 0 for i in range(1, K + 1): # Find the number of valid steps that are <= i j_max = bisect.bisect_right(valid_x, i) total = 0 for j in range(j_max): total += dp[i - valid_x[j]] if total >= MOD: total -= MOD dp[i] = total % MOD print(dp[K] % MOD)