import static java.lang.System.*;
import java.util.*;

public class Main {
	public static final int MOD = 1000000007;
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    }
} import static java.lang.System.*; import static java.lang.System.*; import static java.lang.System.*; import java.util.*; util.* java public class Main {
	public static final int MOD = 1000000007;
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    }
} Main public static final int MOD = 1000000007; MOD 1000000007 public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    } main {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    } Scanner sc = new Scanner(in); sc new Scanner(in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int m = sc.nextInt(); m sc.nextInt() sc.nextInt sc boolean[] wet = new boolean[n+1]; wet new boolean[n+1] n+1 n 1 Arrays.fill(wet, false) Arrays.fill Arrays wet false for(int i=0; i<m; i++) wet[sc.nextInt()] = true; int i=0; int i=0; i 0 i<m i m i++ i++ i wet[sc.nextInt()] = true; wet[sc.nextInt()] = true wet[sc.nextInt()] wet sc.nextInt() sc.nextInt sc true int[] dp = new int[n+3]; dp new int[n+3] n+3 n 3 Arrays.fill(dp, 0) Arrays.fill Arrays dp 0 dp[0] = 1 dp[0] dp 0 1 for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		} int i=0; int i=0; i 0 i<=n i n i++ i++ i {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		} {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		} if(wet[i]) continue; wet[i] wet i continue; dp[i+1] += dp[i] dp[i+1] dp i+1 i 1 dp[i] dp i dp[i+1] %= MOD dp[i+1] dp i+1 i 1 MOD dp[i+2] += dp[i] dp[i+2] dp i+2 i 2 dp[i] dp i dp[i+2] %= MOD dp[i+2] dp i+2 i 2 MOD out.println(dp[n]) out.println out dp[n] dp n String[] args args public class Main {
	public static final int MOD = 1000000007;
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    }
} public class Main {
	public static final int MOD = 1000000007;
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    }
} Main
import static java.lang.System.*;
import java.util.*;

public class Main {
	public static final int MOD = 1000000007;
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(in);

        int n = sc.nextInt();
		int m = sc.nextInt();
		
		boolean[] wet = new boolean[n+1];
		Arrays.fill(wet, false);
		for(int i=0; i<m; i++) wet[sc.nextInt()] = true;

		int[] dp = new int[n+3];
		Arrays.fill(dp, 0);
		
		dp[0] = 1;
		for(int i=0; i<=n; i++) {
			if(wet[i]) continue;

			dp[i+1] += dp[i];
			dp[i+1] %= MOD;
			dp[i+2] += dp[i];
			dp[i+2] %= MOD;
		}
		
        out.println(dp[n]);
    }
}
