
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    }
} import java.util.*; util.* java public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    }
} Main public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    } main {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int n = scanner.nextInt(); n scanner.nextInt() scanner.nextInt scanner int m = scanner.nextInt(); m scanner.nextInt() scanner.nextInt scanner Set<Integer> brokensteps = new HashSet<Integer>(); brokensteps new HashSet<Integer>() for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        } int i = 0; int i = 0; i 0 i < m i m i++ i++ i {
            brokensteps.add(scanner.nextInt());
        } {
            brokensteps.add(scanner.nextInt());
        } brokensteps.add(scanner.nextInt()) brokensteps.add brokensteps scanner.nextInt() scanner.nextInt scanner scanner.close() scanner.close scanner long[] dp; dp dp = new long[n+1] dp new long[n+1] n+1 n 1 dp[0] = 1 dp[0] dp 0 1 for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        } int i = 1; int i = 1; i 1 i < n+1 i n+1 n 1 i++ i++ i {
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        } {
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        } if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            } brokensteps.contains(i) brokensteps.contains brokensteps i {
                dp[i] = 0;
                continue;
            } dp[i] = 0 dp[i] dp i 0 continue; if(i == 1){
                dp[i] = 1;
                continue;
            } i == 1 i 1 {
                dp[i] = 1;
                continue;
            } dp[i] = 1 dp[i] dp i 1 continue; dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7) dp[i] dp i (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7) (dp[i-1] + dp[i-2]) dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 ((long)(Math.pow(10,9)) + 7) (long)(Math.pow(10,9)) Math.pow Math 10 9 7 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 scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    }
} public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    }
} Main

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        
        Set<Integer> brokensteps = new HashSet<Integer>();
        for(int i = 0;i < m;i++){
            brokensteps.add(scanner.nextInt());
        }
        scanner.close();

        long[] dp;
        dp = new long[n+1];
        dp[0] = 1;

        for(int i = 1;i < n+1;i++){
            if(brokensteps.contains(i)){
                dp[i] = 0;
                continue;
            }

            if(i == 1){
                dp[i] = 1;
                continue;
            }

            dp[i] = (dp[i-1] + dp[i-2]) % ((long)(Math.pow(10,9)) + 7);

        }

        System.out.println(dp[n]);




    }
}