#include using namespace std; using ll = long long; #define rep(i, srt, end) for (long long i = (srt); i < (long long)(end); i++) void dijkstra(vector>> G, vector &d, ll srt){ priority_queue, vector>, greater>> que; que.push({0, srt}); d[srt] = 0; while(!que.empty()){ auto q = que.top(); que.pop(); if(q.first > d[q.second]) continue; for(auto g : G[q.second]){ if(d[g.first] <= q.first + g.second) continue; d[g.first] = q.first + g.second; que.push({d[g.first], g.first}); } } } void dijkstra(vector>& G, vector &d, ll srt) { ll n = G.size(); vector>> P(n); rep(i, 0, n) { for(auto j : G[i]) P[i].push_back({j, 1}); } dijkstra(P, d, srt); } void solve() { ll n, k; cin >> n >> k; const ll inf = 1e18; vector dp(n+1, inf); vector> G(n+1); rep(i, 1, n+1) { if(i+3 <= n) G[i].push_back(i+3); if(i*2 <= n) G[i].push_back(2*i); } dijkstra(G, dp, 1); if(dp[n] <= k) cout << "YES\n"; else cout << "NO\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }