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)

use std::io;
use std::str::FromStr;
use std::collections::HashSet;

fn main() {
    let stdin = io::stdin();
    let mut buf = String::new();
    stdin.read_line(&mut buf).ok();

    let mut it = buf.split_whitespace().map(|n| i64::from_str(n).unwrap());
    let (x, y) = (it.next().unwrap(), it.next().unwrap());

    let mut a: HashSet<_> = [1, 3, 5, 7, 8, 10, 12].iter().cloned().collect();
    let mut b: HashSet<_> = [4, 6, 9, 11].iter().cloned().collect();
    //    let mut c: HashSet<_> = [2].iter().cloned().collect();
    a.insert(x);
    a.insert(y);
    if a.len() == 7 {
        println!("Yes");
        return;
    }
    b.insert(x);
    b.insert(y);
    if b.len() == 4 {
        println!("Yes");
        return;
    }

    if x == 2 && y == 2 {
        println!("Yes");
        return;
    }
    println!("No");
}