import java.util.*;

public class Main {
    
    static int MOD = (int) 1e9 + 7;
    
    public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    }
} import java.util.*; util.* java public class Main {
    
    static int MOD = (int) 1e9 + 7;
    
    public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    }
} Main static int MOD = (int) 1e9 + 7; MOD (int) 1e9 + 7 (int) 1e9 7 public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    } main {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        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 long[] dp = new long[N+1]; dp new long[N+1] N+1 N 1 int[] a = new int[M]; a new int[M] M for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        } int i = 0; int i = 0; i 0 i < M i M i++ i++ i {
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        } {
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        } a[i] = sc.nextInt() a[i] a i sc.nextInt() sc.nextInt sc dp[a[i]] = -1 dp[a[i]] dp a[i] a i -1 1 if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            } (i > 0) && (a[i-1] + 1 == a[i]) (i > 0) i 0 (a[i-1] + 1 == a[i]) a[i-1] + 1 a[i-1] a i-1 i 1 1 a[i] a i {
                System.out.println(0);
                return;
            } System.out.println(0) System.out.println System.out System System.out 0 return; dp[0] = 1 dp[0] dp 0 1 if( dp[1] != -1 ) dp[1] = 1; dp[1] != -1 dp[1] dp 1 -1 1 dp[1] = 1 dp[1] dp 1 1 for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        } int i = 2; int i = 2; i 2 i <= N i N i++ i++ i {
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        } {
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        } if(dp[i] == -1) continue; dp[i] == -1 dp[i] dp i -1 1 continue; if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD; dp[i-2] != -1 dp[i-2] dp i-2 i 2 -1 1 dp[i] = (dp[i] + dp[i-2]) % MOD dp[i] dp i (dp[i] + dp[i-2]) % MOD (dp[i] + dp[i-2]) dp[i] dp i dp[i-2] dp i-2 i 2 MOD if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD; dp[i-1] != -1 dp[i-1] dp i-1 i 1 -1 1 dp[i] = (dp[i] + dp[i-1]) % MOD dp[i] dp i (dp[i] + dp[i-1]) % MOD (dp[i] + dp[i-1]) dp[i] dp i dp[i-1] dp i-1 i 1 MOD System.out.println(dp[N]) System.out.println System.out System System.out dp[N] dp N String[] args args public class Main {
    
    static int MOD = (int) 1e9 + 7;
    
    public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    }
} public class Main {
    
    static int MOD = (int) 1e9 + 7;
    
    public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    }
} Main
import java.util.*;

public class Main {
    
    static int MOD = (int) 1e9 + 7;
    
    public static void main(String[] args) throws Exception {
        
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        
        long[] dp = new long[N+1];
        int[] a = new int[M];
        for(int i = 0; i < M; i++){
            a[i] = sc.nextInt();
            dp[a[i]] = -1;
            if( (i > 0) && (a[i-1] + 1 == a[i]) ){
                System.out.println(0);
                return;
            }
        }
        
        dp[0] = 1;
        if( dp[1] != -1 ) dp[1] = 1;
        
        for(int i = 2; i <= N; i++){
            if(dp[i] == -1) continue;
            if(dp[i-2] != -1 ) dp[i] = (dp[i] + dp[i-2]) % MOD;
            if(dp[i-1] != -1 ) dp[i] = (dp[i] + dp[i-1]) % MOD;
        }
        
        System.out.println(dp[N]);
        
    }
}
