#include <bits/stdc++.h>
using namespace std;
int dx[8] = {1, -1, 0, 0, -1, -1, 1, 1};
int dy[8] = {0, 0, -1, 1, -1, 1, -1, 1};
int ar[103];
multiset<int> q;
int main() {
  int n, k, temp;
  scanf("%d %d", &n, &k);
  for (int i = 0; i < k; i++) scanf("%d", &ar[i]);
  int four = n, two = 2 * n, fl = 1;
  for (int i = 0; i < k; i++) {
    int cur = ar[i];
    if (cur >= 3) {
      while (cur >= 3) {
        if (four > 0) {
          four--;
          if (cur >= 4)
            cur -= 4;
          else
            cur = 0;
        } else {
          if (two > 1) {
            two -= 2;
            if (cur >= 4)
              cur -= 4;
            else
              cur = 0;
          } else {
            fl = 0;
            break;
          }
        }
      }
      ar[i] = cur;
      if (!fl) break;
    }
    if (cur != 0) q.insert(cur);
  }
  int one = 0;
  while (!q.empty() && fl) {
    int cur = *(--q.end());
    q.erase(--q.end());
    while (cur != 0) {
      if (four > 0) {
        four--;
        if (cur == 2)
          one++;
        else
          two++;
        cur = 0;
      } else if (two > 0) {
        two--;
        cur = 0;
      } else if (one >= cur) {
        one -= cur;
        cur = 0;
      } else {
        fl = 0;
        break;
      }
    }
    if (!fl) break;
  }
  if (q.empty() && fl)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
