n,m = map(int,input().split())
mp = [False]*(n+1)
for i in range(m):
    a=int(input())
    mp[a]=True
mod = 10**9 + 7

dp = [[0]*2 for i in range(n+1)]
dp[0][0] = 1

for i in range(0,n):
    if(mp[i]):
        continue
    for j in range(2):
        if(dp[i][j]==0):
            continue
        if(not mp[i+1]):
            dp[i+1][0] += dp[i][j]
            dp[i+1][0] %= mod
        if(i==(n-1)):
            continue
        if(not mp[i+2]):
            dp[i+2][1] += dp[i][j]
            dp[i+2][1] %= mod

ans = (dp[-1][0]+dp[-1][1])%mod

print(ans) n,m = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m mp = [False]*(n+1) mp [False]*(n+1) [False] False n+1 n 1 for i in range(m):
    a=int(input())
    mp[a]=True i range(m) range m a=int(input()) a int(input()) int input() input mp[a]=True mp[a] mp a True mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 [0]*2 for i in range(n+1) for i in range(n+1) i range(n+1) range n+1 n 1 for i in range(n+1) [0]*2 [0] 0 2 dp = [[0]*2 for i in range(n+1)] dp [[0]*2 for i in range(n+1)] dp[0][0] = 1 dp[0][0] [0] dp 0 0 1 for i in range(0,n):
    if(mp[i]):
        continue
    for j in range(2):
        if(dp[i][j]==0):
            continue
        if(not mp[i+1]):
            dp[i+1][0] += dp[i][j]
            dp[i+1][0] %= mod
        if(i==(n-1)):
            continue
        if(not mp[i+2]):
            dp[i+2][1] += dp[i][j]
            dp[i+2][1] %= mod i range(0,n) range 0 n if(mp[i]):
        continue
     mp[i] mp i continue for j in range(2):
        if(dp[i][j]==0):
            continue
        if(not mp[i+1]):
            dp[i+1][0] += dp[i][j]
            dp[i+1][0] %= mod
        if(i==(n-1)):
            continue
        if(not mp[i+2]):
            dp[i+2][1] += dp[i][j]
            dp[i+2][1] %= mod j range(2) range 2 if(dp[i][j]==0):
            continue
         dp[i][j]==0 dp[i][j] [i] dp i j 0 continue if(not mp[i+1]):
            dp[i+1][0] += dp[i][j]
            dp[i+1][0] %= mod
         not mp[i+1] mp[i+1] mp i+1 i 1 dp[i+1][0] += dp[i][j] dp[i+1][0] [i+1] dp i+1 i 1 0 dp[i][j] [i] dp i j dp[i+1][0] %= mod dp[i+1][0] [i+1] dp i+1 i 1 0 mod if(i==(n-1)):
            continue
         i==(n-1) i n-1 n 1 continue if(not mp[i+2]):
            dp[i+2][1] += dp[i][j]
            dp[i+2][1] %= mod not mp[i+2] mp[i+2] mp i+2 i 2 dp[i+2][1] += dp[i][j] dp[i+2][1] [i+2] dp i+2 i 2 1 dp[i][j] [i] dp i j dp[i+2][1] %= mod dp[i+2][1] [i+2] dp i+2 i 2 1 mod ans = (dp[-1][0]+dp[-1][1])%mod ans (dp[-1][0]+dp[-1][1])%mod dp[-1][0]+dp[-1][1] dp[-1][0] [-1] dp -1 0 dp[-1][1] [-1] dp -1 1 mod print(ans) print ans dp = [[0]*2 for i in range(n+1)] [[0]*2 for i in range(n+1)] dp n,m = map(int,input().split()) map(int,input().split()) n ans = (dp[-1][0]+dp[-1][1])%mod (dp[-1][0]+dp[-1][1])%mod ans a=int(input()) int(input()) a mp = [False]*(n+1) [False]*(n+1) mp m = map(int,input().split()) map(int,input().split()) m mod = 10**9 + 7 10**9 + 7 mod
n,m = map(int,input().split())
mp = [False]*(n+1)
for i in range(m):
    a=int(input())
    mp[a]=True
mod = 10**9 + 7

dp = [[0]*2 for i in range(n+1)]
dp[0][0] = 1

for i in range(0,n):
    if(mp[i]):
        continue
    for j in range(2):
        if(dp[i][j]==0):
            continue
        if(not mp[i+1]):
            dp[i+1][0] += dp[i][j]
            dp[i+1][0] %= mod
        if(i==(n-1)):
            continue
        if(not mp[i+2]):
            dp[i+2][1] += dp[i][j]
            dp[i+2][1] %= mod

ans = (dp[-1][0]+dp[-1][1])%mod

print(ans)