N,M = list(map(int,input().split()))

a = list(int(eval(input()))for i in range(M))

a= [-1]+a+[N+1]

r = []

for i in range(M+1):

    r.append(a[i+1]-a[i]-1)

fi = [0,1,1]

for i in range(max(r)):

    fi.append(fi[-1]+fi[-2])

ans = 1

for i in r:

    ans = (ans*fi[i])%(10**9+7)

print(ans)
MOD = 10**9+7

N,M = list(map(int,input().split()))

DP = [0]*(N+3)

DP[0] = 1

state = [1]*(N+3)

for _ in range(M):

    i = int(eval(input()))

    state[i] = 0



for i in range(N):

    for j in range(1,3):

        if state[j+i]:

            DP[j+i] += DP[i]

            DP[j+i] %= MOD



print((DP[N]))

N, M = list(map(int, input().split()))
a = list(int(eval(input())) for i in range(M))
a = [-1] + a + [N + 1]
r = []
for i in range(M + 1):
    r.append(a[i + 1] - a[i] - 1)
fi = [0, 1, 1]
for i in range(max(r)):
    fi.append(fi[-1] + fi[-2])
ans = 1
for i in r:
    ans = (ans * fi[i]) % (10**9 + 7)
print(ans)

MOD = 10**9 + 7
N, M = list(map(int, input().split()))
DP = [0] * (N + 3)
DP[0] = 1
state = [1] * (N + 3)
for _ in range(M):
    i = int(eval(input()))
    state[i] = 0
for i in range(N):
    for j in range(1, 3):
        if state[j + i]:
            DP[j + i] += DP[i]
            DP[j + i] %= MOD
print((DP[N]))

+MOD = 10**9 + 7 -a = list(int(eval(input())) for i in range(M)) -a = [-1] + a + [N + 1] -r = [] -for i in range(M + 1): -    r.append(a[i + 1] - a[i] - 1) -fi = [0, 1, 1] -for i in range(max(r)): -    fi.append(fi[-1] + fi[-2]) -ans = 1 -for i in r: -    ans = (ans * fi[i]) % (10**9 + 7) -print(ans) +DP = [0] * (N + 3) +DP[0] = 1 +state = [1] * (N + 3) +for _ in range(M): +    i = int(eval(input())) +    state[i] = 0 +for i in range(N): +    for j in range(1, 3): +        if state[j + i]: +            DP[j + i] += DP[i] +            DP[j + i] %= MOD +print((DP[N]))