#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; constexpr int INF = 1001001001; constexpr int mod = 1000000007; // constexpr int mod = 998244353; template inline bool chmax(T& x, T y){ if(x < y){ x = y; return true; } return false; } template inline bool chmin(T& x, T y){ if(x > y){ x = y; return true; } return false; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> s; int n = s.length(); if(n == 1){ cout << ((s == "6" || s == "7") ? "Yes\n" : "No\n"); return 0; } if(s[0] != '1'){ cout << "No\n"; return 0; } reverse(begin(s), end(s)); vector> dp(n, vector(2)); dp[0][0] = true; for(int i = 0; i < n - 1; ++i){ int num = s[i] - '0'; for(int j = 0; j < 2; ++j){ if(!dp[i][j]) continue; for(int x = 6; x <= 7; ++x){ for(int y = 6; y <= 7; ++y){ if((x + y + j) % 10 == num){ dp[i + 1][(x + y + j) / 10] = true; } } } } } cout << (dp[n - 1][1] ? "Yes\n" : "No\n"); return 0; }