#include <bits/stdc++.h>
using namespace std;
bool marked[100] = {0};
bool isprime(long long int n) {
  if (n < 2) return false;
  if (n == 2) return true;
  if (n % 2 == 0) return false;
  return marked[n] == false;
}
void sieve(long long int a) {
  long long int i, j;
  for (i = 3; i * i <= a; i += 2) {
    if (marked[i] == 0) {
      for (j = i * i; j <= a; j += i + i) {
        marked[j] = 1;
      }
    }
  }
  for (i = 2; i <= a; i++) {
    if (marked[i] == 0) cout << i << " ";
  }
}
int main() {
  long long int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,
      v, w, x, y, z;
  long long int tc;
  cin >> tc;
  while (tc--) {
    cin >> n >> x;
    long long int ar[n + 1];
    long long int od = 0, ev = 0;
    for (i = 0; i < n; i++) {
      cin >> ar[i];
      if (ar[i] % 2 != 0)
        od++;
      else
        ev++;
    }
    if (n == 1 && ar[0] % 2 != 0)
      cout << "YES" << endl;
    else if (n == 1 && ar[0] % 2 == 0)
      cout << "NO" << endl;
    else if (od % 2 == 0 && od == n && x % 2 == 0)
      cout << "NO" << endl;
    else if (ev == n)
      cout << "NO" << endl;
    else {
      if (od > x && x % 2 != 0)
        cout << "YES" << endl;
      else if (od > x && x % 2 == 0 && ev >= 1)
        cout << "YES" << endl;
      else if (od < x && od % 2 != 0) {
        e = x - od;
        if (ev >= e)
          cout << "YES" << endl;
        else
          cout << "NO" << endl;
      } else if (od < x && od % 2 == 0) {
        e = x - (od - 1);
        if (ev >= e)
          cout << "YES" << endl;
        else
          cout << "NO" << endl;
      } else if (od == x && x % 2 == 0) {
        e = x - (od - 1);
        if (ev >= e)
          cout << "YES" << endl;
        else
          cout << "NO" << endl;
      } else if (od == x && x % 2 != 0)
        cout << "YES" << endl;
      else
        cout << "NO" << endl;
    }
  }
  return 0;
}
