#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
int n, k, endd;
bool p[N];
vector<int> primes;
vector<int> nums(N + 3);
void seive() {
  for (int i = 2; i < N; ++i) {
    if (p[i]) continue;
    primes.push_back(i);
    for (int x = i * i; x < N; x += i) {
      p[x] = 1;
    }
  }
}
int main() {
  seive();
  scanf("%d %d", &n, &k);
  for (int i = 0; i < N; ++i) {
    nums[i] = primes[i] + primes[i + 1] + 1;
    if (nums[i] > n) {
      endd = i;
      break;
    }
  }
  int lim = upper_bound(primes.begin(), primes.end(), n) - primes.begin();
  for (int i = 0; i < lim; ++i) {
    if (binary_search(nums.begin(), nums.begin() + endd, primes[i])) --k;
  }
  if (k < 1)
    printf("YES\n");
  else
    printf("NO\n");
}
