#include <bits/stdc++.h>
const int maxn = 1003;
using namespace std;
bitset<maxn> notp;
vector<int> pl;
void prime() {
  notp[0] = notp[1] = true;
  for (int q = 2; q < maxn; q++) {
    if (!notp[q]) pl.push_back(q);
    for (auto p : pl) {
      int x = p * q;
      if (x >= maxn) break;
      notp[x] = true;
      if (q % p == 0) break;
    }
  }
}
int main() {
  prime();
  vector<int> ans;
  for (int i = 0; i < (int)pl.size() - 1; i++) {
    int x = pl[i] + pl[i + 1] + 1;
    if (x >= maxn) break;
    if (!notp[x]) ans.push_back(x);
  }
  int n, k;
  scanf("%d%d", &n, &k);
  int a = upper_bound(ans.begin(), ans.end(), n) - ans.begin();
  puts(a < k ? "NO" : "YES");
  return 0;
}
