#include <bits/stdc++.h>
using namespace std;
void InArll(long long *ar, int n) {
  for (int i = 0; i < n; i += 1) cin >> ar[i];
}
void OutArll(long long *a, int n) {
  for (int i = 0; i < n; i += 1) cout << a[i] << " ";
  cout << "\n";
}
void InAr(int *ar, int n) {
  for (int i = 0; i < n; i += 1) cin >> ar[i];
}
void OutAr(int *a, int n) {
  for (int i = 0; i < n; i += 1) cout << a[i] << " ";
  cout << "\n";
}
void OutVin(vector<int> a) {
  for (int i = 0; i < a.size(); i += 1) cout << a[i] << " ";
  cout << "\n";
}
void OutVll(vector<long long> a) {
  for (int i = 0; i < a.size(); i += 1) cout << a[i] << " ";
  cout << "\n";
}
long long count(long long *a, int n, long long v) {
  long long c = 0;
  for (int i = 0; i < n; i += 1)
    if (a[i] >= v) c++;
  return c;
}
void MEMSET(long long *a, int n, int v) {
  for (int i = 0; i < n; i += 1) a[i] = v;
}
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t;
  cin >> t;
  while (t--) {
    int n, x, p;
    cin >> n >> x;
    bitset<1000> a;
    bool an = false;
    for (int i = 0; i < n; i += 1) {
      cin >> p;
      a[i] = p % 2;
    }
    if (a.count() >= x)
      an = (x % 2) || (n - a.count());
    else if (n == x)
      an = a.count() % 2;
    else
      an = a.count();
    an ? cout << "YES\n" : cout << "NO\n";
  }
}
