#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define CK(N, A, B) (A <= N && N < B)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define RREP(i, a, b) for (int i = (b - 1); a <= i; i--)
#define F first
#define S second
#define ll long long
const int INF = 1e9;
const long long LLINF = 1e18;
using namespace std;
int dy[] = {0,1,0,-1};
int dx[] = {1,0,-1,0};
int dy8[] = {0,1,1,1,0,-1,-1,-1};
int dx8[] = {1,1,0,-1,-1,-1,0,1};
/*==================================================*/
/*variable*/
set<int> g[3] = {{1,3,5,7,8,12}, {4,6,9,11}, {2}};
/*==================================================*/
/*function*/
/*==================================================*/
int main() {
int x, y;
cin>>x>>y;
REP(i,0,3){
if(g[0].find(x) != g[0].end() && g[0].find(y) != g[0].end()){
cout<<"Yes"<<endl;
return 0;
}
}
cout<<"No"<<endl;
return 0;
}