use std::io::*;
use std::str::FromStr;

fn solve(k: i64, v: Vec<i64>) -> bool {
    for i in 0..(k - 1) as usize {
        for j in (i + 1)..k as usize {
            let x = v[j] - v[i];
            if x == 1 {
                if v[i] - 3 == 1 || v[i] - 5 == 1 || v[i] - 6 == 1 || 1 <= v[i] - 8 {
                    return false;
                }
            } else if x == 3 {
                if v[i] - 2 == 1 || v[i] - 3 == 1 || 1 <= v[i] - 5 {
                    return false;
                }
            } else if x == 5 {
                if v[i] - 1 == 1 || v[i] - 4 == 1 || v[i] - 6 == 1 || v[i] - 7 == 1 || 1 <= v[i] - 9
                {
                    return false;
                }
            }
        }
    }
    true
}

fn main() {
    let mut s = String::new();
    stdin().read_line(&mut s).ok();
    let mut itr = s.split_whitespace().map(|x| i64::from_str(x).unwrap());
    let (_n, k) = (itr.next().unwrap(), itr.next().unwrap());

    s.clear();
    stdin().read_line(&mut s).ok();
    let mut itr = s.split_whitespace().map(|x| i64::from_str(x).unwrap());
    let mut v = Vec::new();
    for _i in 0..k {
        v.push(itr.next().unwrap());
    }

    if solve(k, v) {
        println!("Yes");
    } else {
        println!("No");
    }
}