import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	} main {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = Integer.parseInt(sc.next()); n Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int m = Integer.parseInt(sc.next()); m Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int[] dp = new int[n+1]; dp new int[n+1] n+1 n 1 for (int i=0; i<n+1; i++){
			dp[i] = 1;
		} int i=0; int i=0; i 0 i<n+1 i n+1 n 1 i++ i++ i {
			dp[i] = 1;
		} {
			dp[i] = 1;
		} dp[i] = 1 dp[i] dp i 1 for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		} int i=0; int i=0; i 0 i<m i m i++ i++ i {
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		} {
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		} int a = Integer.parseInt(sc.next()); a Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc dp[a] = 0 dp[a] dp a 0 dp[1] = dp[1] != 0 ? dp[0] : 0 dp[1] dp 1 dp[1] != 0 ? dp[0] : 0 dp[1] != 0 dp[1] dp 1 0 dp[0] dp 0 0 for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		} int i=2; int i=2; i 2 i<n+1 i n+1 n 1 i++ i++ i {
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		} {
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		} dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0 dp[i] dp i dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0 dp[i] != 0 dp[i] dp i 0 (dp[i-1] + dp[i-2])%1000000007 (dp[i-1] + dp[i-2]) dp[i-1] dp i-1 i 1 dp[i-2] dp i-2 i 2 1000000007 0 System.out.println(dp[n]%1000000007) System.out.println System.out System System.out dp[n]%1000000007 dp[n] dp n 1000000007 String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = Integer.parseInt(sc.next());
		int m = Integer.parseInt(sc.next());
		int[] dp = new int[n+1];

		for (int i=0; i<n+1; i++){
			dp[i] = 1;
		}

		for (int i=0; i<m; i++){
			int a = Integer.parseInt(sc.next());
			dp[a] = 0;
		}

		dp[1] = dp[1] != 0 ? dp[0] : 0;

		for (int i=2; i<n+1; i++){
			dp[i] = dp[i] != 0 ? (dp[i-1] + dp[i-2])%1000000007 : 0;
		}
//		System.out.println(Arrays.toString(dp));
		System.out.println(dp[n]%1000000007);
	}
}