function Main(input) {

	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split("\n");
    
    let N = parseInt(input[0].split(" ")[0]);
    
    input.shift();
    let a = input.map(Number); //NG段
    let cost = Array(N + 1).fill(0n);
    cost[0] = 1n;
    cost[1] = a.indexOf(1) == -1 ? 1n : 0n; //cost[i] -> i段目まで登る移動方法
    
    for (let i = 2; i < N + 1; i++) {
        
        if (a.indexOf(i) == -1) {
        	cost[i] += cost[i - 1];
       		cost[i] += cost[i - 2];
        }
    }
    
    console.log(String(cost[N] % 1000000007n));
    
}
    
function chkmin(a, b){
    
    if (a > b) return b;
    else return a;
    
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));