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

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  }
} import java.util.Scanner; Scanner java.util import java.util.Arrays; Arrays 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();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  }
} Main public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  } main {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[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 int[] a = new int[n+1]; a new int[n+1] n+1 n 1 int[] b = new int[n+1]; b new int[n+1] n+1 n 1 int count = 0; count 0 for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    } int i=0; int i=0; i 0 i<m i m i++ i++ i {
      a[sc.nextInt()]=-1;
    } {
      a[sc.nextInt()]=-1;
    } a[sc.nextInt()]=-1 a[sc.nextInt()] a sc.nextInt() sc.nextInt sc -1 1 b[0] = 1 b[0] b 0 1 b[1] = (a[1]==-1)?0:1 b[1] b 1 (a[1]==-1)?0:1 (a[1]==-1) a[1] a 1 -1 1 0 1 for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    } int i=2; int i=2; i 2 i<=n i n i++ i++ i {
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    } {
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    } if(b[i]==-1){continue;} b[i]==-1 b[i] b i -1 1 {continue;} continue; b[i-2] = (a[i-2]==-1)? 0:b[i-2] b[i-2] b i-2 i 2 (a[i-2]==-1)? 0:b[i-2] (a[i-2]==-1) a[i-2] a i-2 i 2 -1 1 0 b[i-2] b i-2 i 2 b[i-1] = (a[i-1]==-1)? 0:b[i-1] b[i-1] b i-1 i 1 (a[i-1]==-1)? 0:b[i-1] (a[i-1]==-1) a[i-1] a i-1 i 1 -1 1 0 b[i-1] b i-1 i 1 b[i]= b[i-1] + b[i-2] b[i] b i b[i-1] + b[i-2] b[i-1] b i-1 i 1 b[i-2] b i-2 i 2 b[i]=b[i]%1000000007 b[i] b i b[i]%1000000007 b[i] b i 1000000007 System.out.println(b[n]) System.out.println System.out System System.out b[n] b 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();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  }
} public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  }
} Main
import java.util.Scanner;
import java.util.Arrays;

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[] a = new int[n+1];//0段目からn段目のNG
    int[] b = new int[n+1];//0段目からn段目の場合の数
    int count = 0;

    for(int i=0; i<m; i++){
      a[sc.nextInt()]=-1;
    }

    b[0] = 1;
    b[1] = (a[1]==-1)?0:1;
    for(int i=2; i<=n; i++){
      if(b[i]==-1){continue;}
      b[i-2] = (a[i-2]==-1)? 0:b[i-2];
      b[i-1] = (a[i-1]==-1)? 0:b[i-1];
      b[i]= b[i-1] + b[i-2];
      b[i]=b[i]%1000000007; //i段目の場合の数
    }
    System.out.println(b[n]);


  }
}