#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef pair P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(c) (c).begin(), (c).end() #define uniq(c) c.erase(unique(all(c)), (c).end()) #define index(xs, x) (int)(lower_bound(all(xs), x) - xs.begin()) #define _1 first #define _2 second #define pb push_back #define INF 1145141919 #define MOD 1000000007 vector seq = {0, 6, 7}; string S; int N; int dp[200001][2][4]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> S; N = S.length(); reverse(all(S)); dp[0][0][0] = true; rep(i, N) { rep(j, 2) { rep(s, 4) { if (!dp[i][j][s]) continue; for (int x : seq) for (int y : seq) if ((x+y+j)%10 == S[i]-'0') { if ((s&0b10) && x != 0) continue; if ((s&0b01) && y != 0) continue; int ns = s; if (x == 0) ns |= 0b10; if (y == 0) ns |= 0b01; if (i == 0 && ns != 0) continue; dp[i+1][(x+y+j)/10][ns] |= true; } } } } bool f = false; rep(i, 4) f |= dp[N][0][i]; cout << (f?"Yes":"No") << "\n"; return 0; }