#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(X,Y) for (int (X) = 0;(X) < (Y);++(X)) #define rrep(X,Y) for (int (X) = (Y)-1;(X) >=0;--(X)) #define all(X) (X).begin(),(X).end() #define fi first #define sc second using namespace std; typedef long long ll; typedef pair pii; typedef pair pll; const int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1}; int main() { int flag = 0; string p; cin >> p; if (p.size() == 1) { cout << "No" << endl; return 0; } if (p[0] == '6' || p[0] == '7' || p[0] == '8') { int flag = 0; for (int i = 0; i < p.size(); ++i) { if ((flag == 0 || flag == 1) && (p[i] == '7' || p[i] == '6')) flag = 1; else if ((flag == 0 || flag == 1) && (p[i] == '8')) flag = 2; else if ((flag == 2 || flag == 3) && (p[i] == '3' || p[i] == '4' || p[i] == '5')) flag = 3; else if ((flag == 2 || flag == 3) && (p[i] == '2')) flag = 4; else { cout << "No" << endl; return 0; } } } else if (p[0] == '1') { int flag = 0; for (int i = 0; i < p.size(); ++i) { if (flag == 0 && p[i] == '1') flag = 1; else if ((flag == 1 || flag == 2) && (p[i] == '3' || p[i] == '4' || p[i] == '5')) flag = 2; else if ((flag == 1 || flag == 2) && p[i] == '2') flag = 3; else { cout << "No" << endl; return 0; } } } if (p[p.size()-1] != '2' && p[p.size()-1] != '3' && p[p.size()-1] != '4') { cout << "No" << endl; return 0; } cout << "Yes" << endl; return 0; }