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 C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define repr(i, n) for(int i = (int)(n); i >= 0; i--)
#define repm(i, m, n) for(int i = (int)(m); i < (int)(n); i++)
#define repmr(i, m, n) for(int i = (int)(n); i >= (int)(m); i--)
#define all(x) (x).begin(),(x).end()
#define inf 2e9

using namespace std;
typedef long long int lli;
typedef long long ll;

int n,q;
vector<vector<int>> tree(200000, vector<int>());

int main() {
    int x,y;
    cin >> x >> y;

    vector<int> g1 = {1,3,5,7,8,10,12};
    vector<int> g2 = {4,6,9,11};
    vector<int> g3 = {2};

    int xg, yg;
    rep(i,g1.size()){
        if(x == g1[i]) xg = 1;
        if(y == g1[i]) yg = 1;
    }
    rep(i,g2.size()){
        if(x == g2[i]) xg = 2;
        if(y == g2[i]) yg = 2;
    }
    rep(i,g3.size()){
        if(x == g3[i]) xg = 3;
        if(y == g3[i]) yg = 3;
    }

    if(xg == yg) cout << "Yes" << endl;
    else cout << "No" << endl;
}