N,M = map(int,input().split())
broken = set()
for i in range(M):
    broken.add(int(input()))
if N == 1:
    if 1 in broken:
        print(0)
    else:
        print(1)
elif N == 2:
    if 2 in broken:
        print(0)
    elif 1 in broken:
        print(1)
    else:
        print(2)
else:
    dp = [0 for i in range(N+1)]
    if 1 not in broken:
        dp[1] = 1
    if 2 not in broken:
        dp[2] = dp[1] + 1
    for i in range(3,N+1):
        if i in broken:
            dp[i] = 0
        else:
            dp[i] = dp[i-1] + dp[i-2]
            dp[i] %= 1000000007
    print(dp[N]) N,M = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M broken = set() broken set() set for i in range(M):
    broken.add(int(input())) i range(M) range M broken.add(int(input())) broken.add broken add int(input()) int input() input if N == 1:
    if 1 in broken:
        print(0)
    else:
        print(1)
elif N == 2:
    if 2 in broken:
        print(0)
    elif 1 in broken:
        print(1)
    else:
        print(2)
else:
    dp = [0 for i in range(N+1)]
    if 1 not in broken:
        dp[1] = 1
    if 2 not in broken:
        dp[2] = dp[1] + 1
    for i in range(3,N+1):
        if i in broken:
            dp[i] = 0
        else:
            dp[i] = dp[i-1] + dp[i-2]
            dp[i] %= 1000000007
    print(dp[N]) N == 1 N 1 if 1 in broken:
        print(0)
    else:
        print(1) 1 in broken 1 broken print(0) print 0 print(1) print 1 elif N == 2:
    if 2 in broken:
        print(0)
    elif 1 in broken:
        print(1)
    else:
        print(2) N == 2 N 2 if 2 in broken:
        print(0)
    elif 1 in broken:
        print(1)
    else:
        print(2) 2 in broken 2 broken print(0) print 0 elif 1 in broken:
        print(1)
     1 in broken 1 broken print(1) print 1 print(2) print 2 0 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 dp = [0 for i in range(N+1)] dp [0 for i in range(N+1)] if 1 not in broken:
        dp[1] = 1
     1 not in broken 1 broken dp[1] = 1 dp[1] dp 1 1 if 2 not in broken:
        dp[2] = dp[1] + 1
     2 not in broken 2 broken dp[2] = dp[1] + 1 dp[2] dp 2 dp[1] + 1 dp[1] dp 1 1 for i in range(3,N+1):
        if i in broken:
            dp[i] = 0
        else:
            dp[i] = dp[i-1] + dp[i-2]
            dp[i] %= 1000000007
     i range(3,N+1) range 3 N+1 N 1 if i in broken:
            dp[i] = 0
        else:
            dp[i] = dp[i-1] + dp[i-2]
            dp[i] %= 1000000007
     i in broken i broken dp[i] = 0 dp[i] dp i 0 dp[i] = dp[i-1] + dp[i-2] dp[i] dp i dp[i-1] + dp[i-2] dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 dp[i] %= 1000000007 dp[i] dp i 1000000007 print(dp[N]) print dp[N] dp N N,M = map(int,input().split()) map(int,input().split()) N broken = set() set() broken dp = [0 for i in range(N+1)] [0 for i in range(N+1)] dp M = map(int,input().split()) map(int,input().split()) M
N,M = map(int,input().split())
broken = set()
for i in range(M):
    broken.add(int(input()))
if N == 1:
    if 1 in broken:
        print(0)
    else:
        print(1)
elif N == 2:
    if 2 in broken:
        print(0)
    elif 1 in broken:
        print(1)
    else:
        print(2)
else:
    dp = [0 for i in range(N+1)]
    if 1 not in broken:
        dp[1] = 1
    if 2 not in broken:
        dp[2] = dp[1] + 1
    for i in range(3,N+1):
        if i in broken:
            dp[i] = 0
        else:
            dp[i] = dp[i-1] + dp[i-2]
            dp[i] %= 1000000007
    print(dp[N])