import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    }
} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    }
} Main public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    } main {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int M = sc.nextInt(); M sc.nextInt() sc.nextInt sc boolean[] isSafe = new boolean[N+1]; isSafe new boolean[N+1] N+1 N 1 Arrays.fill(isSafe, true) Arrays.fill Arrays isSafe true for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        } int i = 1; int i = 1; i 1 i < M+1 i M+1 M 1 i++ i++ i {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        } {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        } int tmp = sc.nextInt(); tmp sc.nextInt() sc.nextInt sc isSafe[tmp] = false isSafe[tmp] isSafe tmp false long[] dp = new long[N+1]; dp new long[N+1] N+1 N 1 Arrays.fill(dp, 0) Arrays.fill Arrays dp 0 dp[0] = 1 dp[0] dp 0 1 dp[1] = 1 dp[1] dp 1 1 if(!isSafe[1]) dp[1] = 0; !isSafe[1] isSafe[1] isSafe 1 dp[1] = 0 dp[1] dp 1 0 for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         } int i=2; int i=2; i 2 i<N+1 i N+1 N 1 i++ i++ i {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         } {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         } if(!isSafe[i]) continue; !isSafe[i] isSafe[i] isSafe i continue; dp[i] = (dp[i-1]+dp[i-2])%1000000007 dp[i] dp i (dp[i-1]+dp[i-2])%1000000007 (dp[i-1]+dp[i-2]) dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 1000000007 System.out.println(dp[N]) System.out.println System.out System System.out dp[N] dp N String args[] args public class Main {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    }
} public class Main {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    }
} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        boolean[] isSafe = new boolean[N+1];
        Arrays.fill(isSafe, true);
        
        for (int i = 1; i < M+1; i++) {
            int tmp = sc.nextInt();
            isSafe[tmp] = false;
        }
         long[] dp = new long[N+1]; 
         Arrays.fill(dp, 0);
         dp[0] = 1;
         dp[1] = 1;
         if(!isSafe[1]) dp[1] = 0;
         for(int i=2; i<N+1; i++) {
             if(!isSafe[i]) continue;
             dp[i] = (dp[i-1]+dp[i-2])%1000000007;
         }
       System.out.println(dp[N]);
    }
}