#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  vector<int> grp(k, 0);
  int sumOfAll = 0;
  for (int i = 0; i < k; ++i) {
    int ai;
    scanf("%d", &ai);
    grp[i] = ai;
    sumOfAll += grp[i];
  }
  int quads = n;
  int doubles = 2 * n;
  for (int i = 0; i < k; ++i) {
    while (quads > 0 && grp[i] >= 4) {
      quads--;
      grp[i] -= 4;
    }
  }
  if (quads == 0) {
    int pairNeeded = 0;
    for (int i = 0; i < k; ++i) {
      pairNeeded += grp[i] / 2 + (grp[i] % 2 == 0 ? 0 : 1);
    }
    printf("%s\n", (pairNeeded <= doubles ? "yEs" : "nO"));
  } else {
    int g1 = 0;
    int g2 = 0;
    int g3 = 0;
    for (int i = 0; i < k; ++i) {
      if (grp[i] == 1) {
        ++g1;
      } else if (grp[i] == 2) {
        ++g2;
      } else if (grp[i] == 3 && quads == 0) {
        ++g3;
      } else if (grp[i] == 3) {
        --quads;
      }
    }
    if (quads == 0) {
      int pairNeeded = g1 + g2 + 2 * g3;
      printf("%s\n", (pairNeeded <= doubles ? "YeS" : "No"));
    } else {
      while (g1 > 0 && g2 > 0 && quads > 0) {
        --g1;
        --g2;
        --quads;
      }
      if (quads > 0) {
        if (g2 == 0) {
          int total = 2 * quads + doubles;
          printf("%s\n", (total >= g1 ? "yes" : "no"));
        } else {
          if (doubles >= g2) {
            printf("yeS");
            return 0;
          }
          int g2left = g2 - doubles;
          int total =
              (quads % 2 == 0 ? 3 * quads / 2 : 3 * (quads - 1) / 2 + 1);
          printf("%s\n", total >= g2left ? "Yes" : "No");
        }
      } else {
        printf("%s\n", (g1 + g2 <= doubles ? "YES" : "NO"));
      }
    }
  }
  return 0;
}
