import java.util.*;
import java.lang.*;

public class Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    }
} import java.util.*; util.* java import java.lang.*; lang.* java public class Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    }
} Main public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    } main {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    } 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 List<Integer> a = new ArrayList<>(); a new ArrayList<>() for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        } int i=0; int i=0; i 0 i<M i M i++ i++ i {
            a.add(scanner.nextInt());
        } {
            a.add(scanner.nextInt());
        } a.add(scanner.nextInt()) a.add a scanner.nextInt() scanner.nextInt scanner Set<Integer> bloken = new HashSet<>(a); bloken new HashSet<>(a) List<Integer> w = new ArrayList<>(); w new ArrayList<>() w.add(1) w.add w 1 if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        } bloken.contains(1) bloken.contains bloken 1 {
            w.add(0);
        } w.add(0) w.add w 0 {
            w.add(1);
        } w.add(1) w.add w 1 for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        } int i=2; int i=2; i 2 i<=N i N i++ i++ i {
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        } {
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        } if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            } bloken.contains(i) bloken.contains bloken i {
                w.add(0);
            } w.add(0) w.add w 0 {
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            } w.add( (w.get(i-1) + w.get(i-2))%1000000007 ) w.add w (w.get(i-1) + w.get(i-2))%1000000007 (w.get(i-1) + w.get(i-2)) w.get(i-1) w.get w i-1 i 1 w.get(i-2) w.get w i-2 i 2 1000000007 System.out.println(w.get(N)%1000000007) System.out.println System.out System System.out w.get(N)%1000000007 w.get(N) w.get w N 1000000007 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();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    }
} public class Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    }
} Main
import java.util.*;
import java.lang.*;

public class Main{
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        List<Integer> a = new ArrayList<>();
        for(int i=0; i<M; i++){
            a.add(scanner.nextInt());
        }
        Set<Integer> bloken = new HashSet<>(a);
        List<Integer> w = new ArrayList<>();
        w.add(1);
        if(bloken.contains(1)){
            w.add(0);
        }else{
            w.add(1);
        }
        
        for(int i=2; i<=N; i++){
            if(bloken.contains(i)){
                w.add(0);
            }else{
                w.add( (w.get(i-1) + w.get(i-2))%1000000007 );
            }
        }
        
        //System.out.println(w);
        System.out.println(w.get(N)%1000000007);
    }
}