Problem:
Score : 100 points

Problem Statement

Based on some criterion, Snuke divided the integers from 1 through 12 into three groups as shown in the figure below.
Given two integers x and y (1 ≤ x < y ≤ 12), determine whether they belong to the same group.

Constraints

x and y are integers.

1 ≤ x < y ≤ 12

Input

Input is given from Standard Input in the following format:

x y

Output

If x and y belong to the same group, print Yes; otherwise, print No.

Sample Input 1

1 3

Sample Output 1

Yes

Sample Input 2

2 4

Sample Output 2

No

Solution in Rust (1.15.1) (judge verdict: Accepted)

pub fn get_str() -> String {
    use std::io;
    let mut input = String::new();
    io::stdin().read_line(&mut input);
    input.as_str().trim().to_string()
}
fn split_by_space(ss:&str) -> Vec<&str> {
    ss.split_whitespace().collect()
}
fn str_to_int(ss:&str) -> i64 {
    ss.parse().unwrap()
}
pub fn get_ints() -> Vec<i64> {
    split_by_space(&get_str()).iter().map(|s:&&str| str_to_int(s)).collect()
}


fn group_id(i :i64) -> i32 {
    match i {
        1 | 3 | 5 | 7 | 8 | 10 | 12 => 1,
        4 | 6 | 9 | 11 => 2,
        2 => 3,
        _ => panic!("ERROR")
    }
}

fn main() {
    let (x, y) = { let v = get_ints(); (v[0], v[1]) };
    if group_id(x) == group_id(y) {
        println!("Yes");
    } else {
        println!("No");
    }
}