import java.util.ArrayList;
import java.util.Scanner;
 
class Main {
	int n;
	int m;
	boolean[] a;
	long[] step;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		Main m = new Main(sc);
		m.solve();
	}
	Main(Scanner sc){
		n = sc.nextInt();
		m = sc.nextInt();
		a = new boolean[n+1];
		step = new long[n+1];
		for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		}
		for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		}
		step[0] = 1;
	}
	void solve(){
		for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		}
		System.out.println(step[n]);
	}
} import java.util.ArrayList; ArrayList java.util import java.util.Scanner; Scanner java.util class Main {
	int n;
	int m;
	boolean[] a;
	long[] step;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		Main m = new Main(sc);
		m.solve();
	}
	Main(Scanner sc){
		n = sc.nextInt();
		m = sc.nextInt();
		a = new boolean[n+1];
		step = new long[n+1];
		for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		}
		for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		}
		step[0] = 1;
	}
	void solve(){
		for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		}
		System.out.println(step[n]);
	}
} Main int n; n int m; m boolean[] a; a long[] step; step public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		Main m = new Main(sc);
		m.solve();
	} main {
		Scanner sc = new Scanner(System.in);
		Main m = new Main(sc);
		m.solve();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) Main m = new Main(sc); m new Main(sc) m.solve() m.solve m String[] args args Main(Scanner sc){
		n = sc.nextInt();
		m = sc.nextInt();
		a = new boolean[n+1];
		step = new long[n+1];
		for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		}
		for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		}
		step[0] = 1;
	} Main {
		n = sc.nextInt();
		m = sc.nextInt();
		a = new boolean[n+1];
		step = new long[n+1];
		for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		}
		for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		}
		step[0] = 1;
	} n = sc.nextInt() n sc.nextInt() sc.nextInt sc m = sc.nextInt() m sc.nextInt() sc.nextInt sc a = new boolean[n+1] a new boolean[n+1] n+1 n 1 step = new long[n+1] step new long[n+1] n+1 n 1 for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		} int i = 0; int i = 0; i 0 i <= n i n i++ i++ i {
			a[i] = true;
			step[i] = 0;
		} {
			a[i] = true;
			step[i] = 0;
		} a[i] = true a[i] a i true step[i] = 0 step[i] step i 0 for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		} int i=0; int i=0; i 0 i<m i m i++ i++ i {
			a[sc.nextInt()] = false;
		} {
			a[sc.nextInt()] = false;
		} a[sc.nextInt()] = false a[sc.nextInt()] a sc.nextInt() sc.nextInt sc false step[0] = 1 step[0] step 0 1 Scanner sc sc void solve(){
		for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		}
		System.out.println(step[n]);
	} solve {
		for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		}
		System.out.println(step[n]);
	} for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		} int i = 0; int i = 0; i 0 i<n i n i++ i++ i {
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		} {
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		} for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			} int j = i + 1; int j = i + 1; j i + 1 i 1 j <= Math.min(i+2, n) j Math.min(i+2, n) Math.min Math i+2 i 2 n j++ j++ j {
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			} {
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			} if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				} a[j] a j {
					step[j] += step[i];
					step[j] %= 1000000007;
				} step[j] += step[i] step[j] step j step[i] step i step[j] %= 1000000007 step[j] step j 1000000007 System.out.println(step[n]) System.out.println System.out System System.out step[n] step n
import java.util.ArrayList;
import java.util.Scanner;
 
class Main {
	int n;
	int m;
	boolean[] a;
	long[] step;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		Main m = new Main(sc);
		m.solve();
	}
	Main(Scanner sc){
		n = sc.nextInt();
		m = sc.nextInt();
		a = new boolean[n+1];
		step = new long[n+1];
		for(int i = 0; i <= n;i++){
			a[i] = true;
			step[i] = 0;
		}
		for(int i=0;i<m;i++){
			a[sc.nextInt()] = false;
		}
		step[0] = 1;
	}
	void solve(){
		for(int i = 0;i<n;i++){
			for(int j = i + 1;j <= Math.min(i+2, n);j++){
				if(a[j]){
					step[j] += step[i];
					step[j] %= 1000000007;
				}
			}
		}
		System.out.println(step[n]);
	}
}
