#include using namespace std; int INF = 1000000000; int main() { int N,K; cin >> N >> K; vectordist(N+1,INF); vector>>road(N+1); for(int i = 1; i <= N; i++) { if(i*2 <= N) { road[i].push_back({i*2,1}); } if(i+3 <= N) { road[i].push_back({i+3,1}); } } priority_queue,vector>,greater>>que; que.push({0,1}); dist[0] = 0; while (!que.empty()) { pair x = que.top(); que.pop(); if(dist[x.second] < x.first) { continue; } for(auto i:road[x.second]) { if(dist[i.first] > x.first+i.second) { dist[i.first] = x.first+i.second; que.push({dist[i.first],i.first}); } } } if(dist[N] <= K) { cout << "YES" << endl; } else { cout << "NO" << endl; } }