#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)

int main(int argc, char const *argv[])
{
	string s; cin >> s;
	reverse(s.begin(), s.end());


	bool flag = true;

	// 同じ桁
	rep(i, s.size()) {
		if (i == 0) {
			if (!(s[i] == '2' || s[i] == '3' || s[i] == '4')) {
				// printf("i %d\n", i);
				flag = false; break;
			}
		} else if (i == s.size() - 1) {
			if (s[i] != '1') {
				flag = false;
				break;
			}
		} else {
			if (!(s[i] == '3' || s[i] == '4' || s[i] == '5')) {
				// printf("i %d\n", i);
				flag = false;
				break;
			}
		}
	}
	if (flag) {
		printf("Yes\n"); return 0;
	}

	flag = true;
	// 異なる桁
	bool f = false;
	rep(i, s.size()) {
		if (i == 0) {
			if (!(s[i] == '2' || s[i] == '3' || s[i] == '4')) {
				flag = false; break;
			}
		} else if (i == s.size() - 1) {
			if (f) {
				if (!(s[i] == '6' || s[i] == '7')) {
					flag = false;
					break;
				}
			} else {
				if (s[i] != '1') {
					flag = false;
					break;
				}
			}
		} else {
			if (!f) {
				if (s[i] == '7' || s[i] == '8') {
					f = true;
				} else if (s[i] == '3' || s[i] == '4' || s[i] == '5') {

				} else {
					// printf("i %d\n", i);
					flag = false;
					break;
				}
			} else {
				if (!(s[i] == '6' || s[i] == '7')) {
					// printf("i %d\n", i);
					flag = false;
					break;
				}
			}
		}
	}


	if (flag) {
		printf("Yes\n"); return 0;
	}

	printf("No\n");
	return 0;
}