Shubham has an array $a$ of size $n$, and wants to select exactly $x$ elements from it, such that their sum is odd. These elements do not have to be consecutive. The elements of the array are not guaranteed to be distinct.

Tell him whether he can do so.


-----Input-----

The first line of the input contains a single integer $t$ $(1\le t \le 100)$ — the number of test cases. The description of the test cases follows.

The first line of each test case contains two integers $n$ and $x$ $(1 \le x \le n \le 1000)$ — the length of the array and the number of elements you need to choose.

The next line of each test case contains $n$ integers $a_1, a_2, \dots, a_n$ $(1 \le a_i \le 1000)$ — elements of the array.


-----Output-----

For each test case, print "Yes" or "No" depending on whether it is possible to choose $x$ elements such that their sum is odd.

You may print every letter in any case you want.


-----Example-----
Input
5
1 1
999
1 1
1000
2 1
51 50
2 2
51 50
3 3
101 102 103

Output
Yes
No
Yes
Yes
No



-----Note-----

For $1$st case: We must select element $999$, and the sum is odd.

For $2$nd case: We must select element $1000$, so overall sum is not odd.

For $3$rd case: We can select element $51$.

For $4$th case: We must select both elements $50$ and $51$  — so overall sum is odd.

For $5$th case: We must select all elements  — but overall sum is not odd.

Source: codeforces | Difficulty: EASY
Tags: Mathematics

Implementation

Complete search


Solutions:
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	even = odd = 0
	arr = list(map(int, input().split()))
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	i = 1
	flag = False
	while i <= odd and i <= x:
		have = even
		need = x - i
		if even >= need:
			flag = True
		i += 2
	if flag:
		print('Yes')
	else:
		print('No')


from sys import stdin
n = int(stdin.readline())
for _ in range(n):
	(size, x) = map(int, stdin.readline().rstrip().split(' '))
	nums = list(map(int, stdin.readline().rstrip().split(' ')))
	odds = 0
	for num in nums:
		if num % 2 == 1:
			odds += 1
	evens = len(nums) - odds
	for odd_group in range(1, x + 1, 2):
		if x - odd_group <= evens and odd_group <= odds:
			print('YES')
			break
	else:
		print('NO')


import sys
input = sys.stdin.readline

def getInt():
	return int(input())

def getVars():
	return map(int, input().split())

def getList():
	return list(map(int, input().split()))

def getStr():
	return input().strip()
t = getInt()
for _ in range(t):
	(n, x) = getVars()
	a = getList()
	b0 = 0
	for i in range(n):
		if a[i] % 2 == 0:
			b0 += 1
	b1 = n - b0
	if b1 > 0:
		if b0 > 0:
			if x == n:
				if b1 % 2 == 1:
					print('YES')
				else:
					print('NO')
			else:
				print('YES')
		elif x % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	li = [int(p) for p in input().split()]
	odd = 0
	even = 0
	for i in li:
		if i % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	if even == 0:
		if x % 2 == 0:
			print('No')
		elif odd >= x:
			print('Yes')
		else:
			print('No')
		continue
	if odd % 2 == 0:
		odd = odd - 1
	rem = x - odd
	if rem <= 0:
		print('Yes')
		continue
	if even >= rem:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for i in a:
		if i & 1:
			odd += 1
		else:
			even += 1
	i = 1
	ok = 0
	if even == 0:
		if x & 1:
			print('YES')
		else:
			print('NO')
		continue
	while True:
		if i > odd:
			break
		if i + even >= x:
			ok = 1
			break
		i += 2
	if ok:
		print('YES')
	else:
		print('NO')


for i in range(int(input())):
	(x, y) = map(int, input().split())
	(odd, even) = (0, 0)
	nums = [int(z) for z in input().split()]
	for num in nums:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	ans = False
	n = 1
	while True:
		o = 2 * n - 1
		e = y - o
		if o > 2 * n - 1 or e < 0:
			break
		if o <= odd and e <= even:
			ans = True
			break
		n += 1
	print('Yes') if ans else print('No')


for _ in range(int(input())):
	(x, y) = map(int, input().split())
	data = list(map(int, input().split()))
	counter = 0
	counter2 = 0
	for i in data:
		if i % 2 != 0:
			counter += 1
		else:
			counter2 += 1
	if counter2 == 0:
		if y % 2 != 0 and counter >= y:
			print('Yes')
		else:
			print('No')
	elif counter % 2 != 0:
		if counter + counter2 >= y:
			print('Yes')
		else:
			print('No')
	elif counter2 + (counter - 1) >= y and counter != 0:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	ne = no = 0
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	for j in l:
		if j % 2 == 0:
			ne += 1
		else:
			no += 1
	if no == 0:
		print('No')
	elif ne == 0 and x % 2 == 0:
		print('No')
	elif ne >= x - 1:
		print('Yes')
	elif (x - ne) % 2 != 0 or ((x - ne) % 2 == 0 and no >= x - ne + 1):
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(s) for s in input().split()]
	(e, o) = (0, 0)
	for v in a:
		if v % 2:
			o += 1
		else:
			e += 1
	if o == 0:
		print('NO')
		continue
	if o % 2 == 0:
		o -= 1
	if x % 2 == 0:
		o = min(x - 1, o)
		if e >= x - o:
			print('YES')
		else:
			print('NO')
	elif e >= x - o:
		print('YES')
	else:
		print('NO')


t = int(input())
for _ in range(t):
	(n, x) = input().split()
	x = int(x)
	n = int(n)
	even = 0
	a = input().split()
	for i in a:
		if int(i) % 2 == 0:
			even += 1
	odd = n - even
	if odd == 0:
		print('No')
	elif even == 0 and x % 2 == 0:
		print('No')
	elif x == n and odd % 2 == 0:
		print('No')
	else:
		print('Yes')


def odds(n, arr):
	sum = 0
	countodd = 0
	counteven = 0
	for i in arr:
		if i % 2 == 0:
			counteven += 1
		else:
			countodd += 1
	if countodd == 0:
		return 'NO'
	if countodd % 2 == 0:
		countodd -= 1
	if counteven == 0 and n % 2 == 0:
		return 'NO'
	if countodd + counteven >= n:
		return 'YES'
	else:
		return 'NO'
t = int(input())
for i in range(t):
	lst = list(map(int, input().strip().split()))
	lst1 = list(map(int, input().strip().split()))
	print(odds(lst[1], lst1))


import math

def sel(n, k, arr):
	(par, impar) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			par += 1
		else:
			impar += 1
	minimum = 0
	if par < k - 1:
		minimum = par
	else:
		minimum = k - 1
	d = k - minimum
	if d % 2 == 0:
		d += 1
	if impar >= d and d <= k:
		print('Yes')
	else:
		print('No')

def main():
	n = int(input())
	for i in range(n):
		x = input().split()
		n = int(x[0])
		k = int(x[1])
		arr = input().split()
		arr = [int(i) for i in arr]
		sel(n, k, arr)
main()


import sys
input = lambda : sys.stdin.readline().rstrip('\r\n')
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odds = 0
	for i in range(n):
		if a[i] % 2 == 1:
			odds += 1
	if odds == 0:
		print('NO')
	elif odds % 2 == 0 and x == n:
		print('NO')
	elif odds == n and x % 2 == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for _ in range(t):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	for i in arr:
		if i & 1:
			odd += 1
	if not odd or (odd == n and (not k & 1)) or (k == n and (not odd & 1)):
		print('No')
	else:
		print('Yes')


R = lambda : map(int, input().split())
(t,) = R()
exec(t * "\nn,x=R();\na=1+sum(x%2 for x in R())\nprint('YNeos'[a<2or~x&(a>n)or x>n-a%2::2])\n")


import math
t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	evencount = 0
	oddcount = 0
	for j in range(n):
		if a[j] % 2 == 0:
			evencount += 1
		else:
			oddcount += 1
	if oddcount == 0:
		print('No')
	elif evencount == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x < n:
		print('Yes')
	elif oddcount % 2 == 1:
		print('Yes')
	else:
		print('No')


T = int(input())
for t in range(T):
	(N, x) = [int(_) for _ in input().split()]
	A = [int(_) for _ in input().split()]
	odds = len([el for el in A if el % 2])
	evens = len([el for el in A if el % 2 == 0])
	if odds == 0:
		print('No')
	elif x == N:
		if odds % 2:
			print('Yes')
		else:
			print('No')
	elif evens:
		print('Yes')
	elif x % 2:
		print('Yes')
	else:
		print('No')


import sys
from collections import defaultdict as dd
import heapq
import math
try:
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
except:
	pass
input = sys.stdin.readline
for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	q = 0
	w = 0
	for j in a:
		if j % 2 == 0:
			q += 1
		else:
			w += 1
	if x % 2 == 0 and w == n:
		print('NO')
	elif w % 2 == 1:
		print('YES')
	elif w >= 1 and x < n:
		print('YES')
	else:
		print('NO')


n = int(input())
for i in range(n):
	(_, x) = map(int, input().split())
	s = list(map(int, input().split()))
	(ce, co) = (0, 0)
	for i in s:
		if i % 2 == 0:
			ce += 1
		else:
			co += 1
	if co == 0:
		print('NO')
		continue
	elif ce == 0 and x % 2 == 0:
		print('NO')
		continue
	if co % 2 == 0:
		co -= 1
	if co + ce >= x:
		print('YES')
	else:
		print('NO')


t = int(input())
for i in range(t):
	(n, x) = input().split()
	(n, x) = (int(n), int(x))
	inp = [int(j) for j in input().split()]
	(evencnt, oddcnt) = (0, 0)
	flag = 0
	for num in inp:
		if num % 2 == 0:
			evencnt = evencnt + 1
		else:
			oddcnt = oddcnt + 1
	if oddcnt == 0:
		print('NO')
		continue
	if evencnt == 0 and x % 2 == 0:
		print('NO')
		continue
	temp = 1
	while temp <= oddcnt:
		if evencnt >= x - temp:
			print('YES')
			flag = 1
			break
		temp = temp + 2
	if flag == 1:
		continue
	print('NO')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	o = e = 0
	for i in map(int, input().split()):
		if i % 2:
			o += 1
		else:
			e += 1
	if k % 2 == 0 and e == 0:
		print('No')
	else:
		for odd in range(1, o + 1, 2):
			if odd <= o and k - odd <= e:
				print('Yes')
				break
		else:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	lst = []
	odd = 0
	eve = 0
	lst += list(map(int, input().split()))
	for j in range(n):
		if lst[j] % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
	elif x == n and odd % 2 == 0:
		print('NO')
	elif x < odd and x % 2 == 0 and (odd == n):
		print('NO')
	else:
		print('YES')


import math

def main():
	for q in range(int(input())):
		(N, X) = map(int, input().split())
		l = list(map(int, input().split()))
		odd = 0
		even = 0
		for i in range(N):
			if l[i] % 2 == 0:
				even += 1
			else:
				odd += 1
		left = max(X - even, 0)
		if left == 0:
			if odd > 0:
				print('YES')
			else:
				print('NO')
		else:
			odleft = odd - left
			if left % 2 == 1:
				print('YES')
			elif odd > left:
				if even > 0:
					print('YES')
				else:
					print('NO')
			else:
				print('NO')
main()


def count(n, x, a):
	c = 0
	for k in a:
		c += k % 2
	if n > c:
		y = min(n - c, x)
		for i in range(y + 1):
			if (x - i) % 2 == 1 and x - i <= c:
				ans = 'Yes'
				break
			ans = 'No'
	elif x % 2 == 1:
		ans = 'Yes'
	else:
		ans = 'No'
	return ans
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print(count(n, x, a))


for i in range(int(input())):
	(n, x) = map(int, input().split())
	t = list(map(int, input().split()))
	e = 0
	o = 0
	for k in t:
		if k % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	else:
		u = 0
		for k in range(1, o + 1, 2):
			if k <= x:
				if e >= x - k:
					print('Yes')
					u += 1
					break
		if u == 0:
			print('No')


def oddSection(n, k, array):
	if n == k:
		if sum(array) % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	even = 0
	odd = 0
	for x in array:
		if x % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd >= 1:
		if k % 2 == 0 and even == 0:
			return 'No'
		return 'Yes'
	else:
		return 'No'
t = int(input())
for _ in range(t):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	print(oddSection(n, k, l))


def solve(n, x, a):
	(num_odd, num_even) = (0, 0)
	for i in a:
		if i % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	for i in range(0, num_odd + 1):
		j = x - 2 * i - 1
		if j <= num_even and j >= 0 and (2 * i + 1 <= num_odd):
			return 'Yes'
	return 'No'

def main():
	inp = lambda : [int(x) for x in input().split()]
	inn = lambda : int(input())
	t = inn()
	for _ in range(t):
		(n, x) = inp()
		a = inp()
		print(solve(n, x, a))
main()


t = int(input())
while t:
	t += -1
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in l:
		if i % 2:
			odd -= -1
		else:
			even -= -1
	ch = 1
	if odd == n and x % 2 == 0:
		ch = 0
	elif even == n:
		ch = 0
	elif sum(l) % 2 == 0 and x == n:
		ch = 0
	if ch:
		print('Yes')
	else:
		print('No')


def solve():
	(n, c) = map(int, input().split())
	nums = list(map(int, input().split()))

	def count():
		odd = sum((x & 1 for x in nums))
		even = sum((not x & 1 for x in nums))
		for i in range(1, min(odd, c) + 1, 2):
			if even >= c - i:
				return True
		return False
	print('Yes' if count() else 'No')
for _ in range(int(input())):
	solve()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	s = sum([i % 2 for i in a])
	if s == 0 or (n == x and s % 2 == 0) or (s == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')


a = int(input())
for _ in range(a):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	od = 0
	for i in arr:
		if i % 2 != 0:
			od += 1
	if od == n and x % 2 == 0:
		print('No')
	elif od % 2 != 0:
		if x - od <= n - od and od >= 1:
			print('Yes')
		else:
			print('No')
	elif x - od + 1 <= n - od and od >= 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for j in range(t):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	b = [i % 2 for i in a]
	c = b.count(1)
	if c == 0 or (c % 2 == 0 and n == k) or (c == n and k % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
for iteration in range(t):
	nx = input().split()
	n = int(nx[0])
	x = int(nx[1])
	a = list(map(int, input().split()))
	a = list(map(lambda x: x % 2, a))
	s = sum(a)
	if x <= n - 1:
		if s < n:
			if s > 0:
				print('Yes')
			else:
				print('No')
		elif x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x == n:
		if s < n:
			if s % 2 == 1:
				print('Yes')
			else:
				print('No')
		elif x % 2 == 1:
			print('Yes')
		else:
			print('No')


for i in range(int(input())):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	(p, q) = (0, 0)
	for j in l:
		if j % 2 == 0:
			p += 1
		else:
			q += 1
	z = q
	if z % 2 == 0:
		z -= 1
	if q == 0:
		print('No')
	elif p >= b:
		print('Yes')
	elif z >= b:
		if b % 2 == 1:
			print('Yes')
		elif p >= 1:
			print('Yes')
		else:
			print('No')
	elif b - z <= p:
		print('Yes')
	else:
		print('No')


def odd_selection():
	t = int(input())
	if t > 100 or t < 1:
		return
	ans = []
	for s in range(t):
		(n, x) = map(int, input().split())
		array = list(map(int, input().split()))
		if len(array) != n or x > n or n < 1 or (n > 1000):
			return
		if x == n:
			if sum(array) % 2 != 0:
				ans.append('Yes')
			else:
				ans.append('No')
		else:
			even = []
			odd = []
			for i in array:
				if i % 2 == 0:
					even.append(i)
				else:
					odd.append(i)
			count = 0
			if x % 2 != 0:
				j = x
				while j > 0:
					if len(odd) >= j and len(even) >= x - j:
						count += 1
					j -= 2
			else:
				j = x - 1
				while j > 0:
					if len(odd) >= j and len(even) >= x - j:
						count += 1
					j -= 2
			if count > 0:
				ans.append('Yes')
			else:
				ans.append('No')
	for s in range(t):
		print(ans[s])
odd_selection()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().strip().split()))
	a = 0
	for j in arr:
		if j % 2 == 1:
			a += 1
	b = len(arr) - a
	ans = False
	for j in range(0, x + 1):
		if j <= a and x - j <= b and (j % 2 == 1):
			ans = True
			break
	if ans:
		print('Yes')
	else:
		print('No')


R = lambda : map(int, input().split())
(t,) = R()
for _ in [0] * t:
	(n, x) = R()
	a = 1
	for y in R():
		a += y % 2
	print('YNeos'[a < 2 or ~x & (a > n) or x > n - a % 2::2])


T = int(input())
for _ in range(T):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for v in a:
		if v % 2 == 0:
			even += 1
		else:
			odd += 1
	valid = False
	if odd >= x:
		if x % 2 == 1 or (x % 2 == 0 and even >= 1):
			valid = True
	elif 1 <= odd and odd < x:
		if even >= x - odd + (odd % 2 == 0):
			valid = True
	else:
		valid = False
	print('Yes' if valid else 'No')


T = int(input())

def solve():
	[N, X] = list(map(int, input().split()))
	A = list(map(int, input().split()))
	count_odd = 0
	count_even = 0
	for x in A:
		if x % 2 == 0:
			count_even += 1
		else:
			count_odd += 1
	if count_odd == 0:
		return False
	for i in range(1, count_odd + 1, 2):
		if i <= X and count_even >= X - i:
			return True
	return False
for _ in range(T):
	if solve():
		print('Yes')
	else:
		print('No')


def read_list():
	return list(map(int, input().split(' ')))

def print_list(l):
	print(' '.join(map(str, l)))
N = int(input())
for _ in range(N):
	(n, x) = read_list()
	a = read_list()
	odd = 0
	for i in a:
		if i & 1:
			odd += 1
	even = n - odd
	if even == 0:
		if odd >= x and x & 1:
			print('Yes')
		else:
			print('No')
	elif odd == 0:
		print('No')
	else:
		if not odd & 1:
			odd -= 1
		if x & 1:
			if even & 1:
				even -= 1
		elif not even & 1:
			even -= 1
		if odd + even >= x:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(0, t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in range(0, n):
		if a[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif o >= x and x % 2 == 1:
		print('Yes')
	elif o >= x:
		if e == 0:
			print('No')
		else:
			print('Yes')
	elif o % 2 == 1:
		print('Yes')
	elif o - 1 + e >= x and e != 0:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in lis:
		if i & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
	else:
		odd = min(odd, x)
		if odd % 2 == 0:
			odd -= 1
		remain = x - min(x, odd)
		if remain <= even:
			print('Yes')
		else:
			print('No')


def call():
	coN = {'odd': 0, 'eve': 0}
	(n, k) = map(int, input().split())
	l = [int(x) for x in input().split()]
	for i in l:
		if i & 1:
			coN['odd'] += 1
		else:
			coN['eve'] += 1
	po = 0
	if coN['odd'] == 0:
		print('NO')
		return
	for i in range(1, coN['odd'] + 1, 2):
		if i > k:
			break
		if k - i <= coN['eve']:
			print('YES')
			return
	print('NO')
for _ in range(int(input())):
	call()


t = int(input())
res = []
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	nums = list(map(int, input().split()))
	c = {'even': 0, 'odd': 0}
	for i in nums:
		if i & 1:
			c['odd'] += 1
		else:
			c['even'] += 1
	(even, odd) = (c['even'], c['odd'])
	flag = False
	for i in range(odd + 1):
		if i & 1 and i <= x and (x - i <= even):
			flag = True
	print('Yes' if flag else 'No')


import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')

def fact(x):
	if x == 0:
		return 1
	else:
		return x * fact(x - 1)

def lower_bound(li, num):
	answer = -1
	start = 0
	end = len(li) - 1
	while start <= end:
		middle = (end + start) // 2
		if li[middle] >= num:
			answer = middle
			end = middle - 1
		else:
			start = middle + 1
	return answer

def upper_bound(li, num):
	answer = -1
	start = 0
	end = len(li) - 1
	while start <= end:
		middle = (end + start) // 2
		if li[middle] <= num:
			answer = middle
			start = middle + 1
		else:
			end = middle - 1
	return answer

def abs(x):
	return x if x >= 0 else -x

def binary_search(li, val, lb, ub):
	ans = 0
	while lb <= ub:
		mid = (lb + ub) // 2
		if li[mid] > val:
			ub = mid - 1
		elif val > li[mid]:
			lb = mid + 1
		else:
			ans = 1
			break
	return ans

def sieve_of_eratosthenes(n):
	ans = []
	arr = [1] * (n + 1)
	(arr[0], arr[1], i) = (0, 0, 2)
	while i * i <= n:
		if arr[i] == 1:
			j = i + i
			while j <= n:
				arr[j] = 0
				j += i
		i += 1
	for k in range(n):
		if arr[k] == 1:
			ans.append(k)
	return ans
from math import *
for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	nums = list(map(int, input().split()))
	(cntev, cntod) = (0, 0)
	for i in nums:
		if i % 2 == 0:
			cntev += 1
		else:
			cntod += 1
	if cntod == 0:
		print('No')
		continue
	cntod -= 1
	x -= 1
	while cntod > 1 and x > 1:
		cntod -= 2
		x -= 2
	if x <= cntev:
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
for _ in range(int(stdin.readline())):
	(n, x) = map(int, stdin.readline().split())
	arr = list(map(int, stdin.readline().split()))
	od = 0
	ev = 0
	for l in arr:
		if l % 2 == 1:
			od += 1
		else:
			ev += 1
	if od >= x:
		if x % 2 == 1:
			stdout.write(str('Yes') + '\n')
		elif x % 2 == 0:
			if ev >= 1:
				stdout.write(str('Yes') + '\n')
			else:
				stdout.write(str('No') + '\n')
	elif od < x:
		if od == 0:
			stdout.write(str('No') + '\n')
		else:
			if od % 2 == 0:
				od -= 1
			if od % 2 == 1:
				if ev >= x - od:
					stdout.write(str('Yes') + '\n')
				else:
					stdout.write(str('No') + '\n')


test = int(input())
while test > 0:
	(n, x) = map(int, input().split(' '))
	l = list(map(int, input().split(' ')))
	odd = 0
	for i in l:
		if i % 2 == 1:
			odd += 1
	if odd == 0 or (odd == n and x % 2 == 0) or (odd % 2 == 0 and n == x):
		print('No')
	else:
		print('Yes')
	test -= 1


import sys
input = sys.stdin.readline
I = lambda : list(map(int, input().split()))
(t,) = I()
for _ in range(t):
	(n, x) = I()
	l = list(map(lambda x: x % 2, I()))
	e = l.count(0)
	o = n - e
	if x == n or o == 0:
		if o % 2:
			print('Yes')
		else:
			print('No')
		continue
	if x % 2:
		if o > 0:
			print('Yes')
		else:
			print('No')
	elif x == 0 or e > 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, m) = map(int, input().split())
	lst = list(map(int, input().split()))
	s = [j % 2 for j in lst]
	odd = sum(s)
	even = n - odd
	res = 'No'
	for i in range(m):
		if i <= even:
			if m - i <= odd and (m - i) % 2 == 1:
				res = 'Yes'
				break
	print(res)


for i in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	s = 0
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	f = 0
	for i in range(x + 1):
		n1 = i
		n2 = x - i
		if n1 <= o and n2 <= e:
			s = n1 * 1 + n2 * 2
			if s % 2 != 0:
				print('Yes')
				f = 1
				break
	if f == 0:
		print('No')


import heapq as hp
import collections
import bisect
import math
import re

def unpack(func=int):
	return map(func, input().split())

def l_unpack(func=int):
	return list(map(func, input().split()))

def s_unpack(func=int):
	return sorted(map(func, input().split()))

def ml_unpack(n):
	return [int(input()) for i in range(n)]

def range_n():
	return range(int(input()))

def counter(a):
	d = {}
	for x in a:
		if x in d:
			d[x] += 1
		else:
			d[x] = 1
	return d

def getint():
	return int(input())

def setbits(x):
	count = 0
	while x:
		x = x & x - 1
		count += 1
	return count

def main():
	for _ in range_n():
		(n, x) = unpack()
		odd = 0
		for i in unpack():
			if i & 1:
				odd += 1
		even = n - odd
		if x > even:
			t = x - even
			if t & 1:
				print('Yes' if odd > 0 else 'No')
			elif even:
				even -= 1
				x = x - even
				print('Yes' if x & 1 and odd >= x else 'No')
			else:
				print('Yes' if x & 1 and odd >= x else 'No')
		else:
			print('Yes' if odd > 0 else 'No')
main()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	ls = list(map(int, input().split()))
	odd = 0
	for i in range(n):
		if ls[i] % 2 == 1:
			odd += 1
	even = n - odd
	neutral = min(odd, even)
	if x == 1:
		if odd > 0:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		f1 = False
		f2 = False
		if odd >= 1:
			odd -= 1
			f1 = True
			x -= 1
		if even >= 1:
			even -= 1
			f2 = True
			x -= 1
		if f1 and f2 and (even + odd // 2 * 2 >= x):
			print('Yes')
		else:
			print('No')
	else:
		f1 = False
		if odd >= 1:
			odd -= 1
			f1 = True
			x -= 1
		if f1 and even + odd // 2 * 2 >= x:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split(' '))
	even = []
	odd = []
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		for i in a:
			if i % 2 == 0:
				even.append(i)
			else:
				odd.append(i)
		if len(odd) == 0:
			print('No')
		elif x % 2 == 0 and len(even) == 0:
			print('No')
		else:
			print('Yes')


import math
import os
import random
import re
import sys
t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	e = 0
	o = 0
	res = 'No'
	for i in arr:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print(res)
	else:
		if o % 2 == 0:
			o -= 1
		remain = x - o
		if x % 2 == 0 and e == 0:
			print('No')
			continue
		if remain <= e:
			print('Yes')
		else:
			print('No')


def solve(ne, no, a, n, x):
	for i in range(n):
		if a[i] % 2 == 0:
			ne += 1
		else:
			no += 1
	if no == 0 or no + ne < x:
		return False
	elif no + ne == x:
		if no % 2 == 0:
			return False
		else:
			return True
	elif x % 2 == 0:
		if no <= x:
			if ne >= x - no - 1:
				return True
			else:
				return False
		elif ne == 0:
			return False
		else:
			return True
	elif no >= x:
		return True
	elif ne >= x - no:
		return True
	else:
		return False
t = int(input())
while t > 0:
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	ne = no = 0
	ans = solve(ne, no, a, n, x)
	if ans:
		print('Yes')
	else:
		print('No')
	t -= 1


from sys import stdin
import math
A = int(stdin.readline())
for b in range(0, A):
	even = 0
	odd = 0
	B = stdin.readline().split()
	n = int(B[0])
	x = int(B[1])
	C = stdin.readline().split()
	for t in range(0, n):
		if int(C[t]) % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if x % 2 == 0:
		if odd % 2 == 0:
			X = min(x - 1, odd - 1)
			if even < x - X:
				print('No')
			else:
				print('Yes')
		else:
			X = min(odd, x - 1)
			if even < x - X:
				print('No')
			else:
				print('Yes')
	elif odd % 2 == 0:
		X = min(odd - 1, x)
		if even < x - X:
			print('No')
		else:
			print('Yes')
	else:
		X = min(odd, x)
		if even < x - X:
			print('No')
		else:
			print('Yes')


from __future__ import division, print_function
import sys
if sys.version_info[0] < 3:
	from __builtin__ import xrange as range
	from future_builtins import ascii, filter, hex, map, oct, zip
import os, sys, bisect, copy
from collections import defaultdict, Counter, deque
if os.path.exists('in.txt'):
	sys.stdin = open('in.txt', 'r')
if os.path.exists('out.txt'):
	sys.stdout = open('out.txt', 'w')

def input():
	return sys.stdin.readline()

def mapi(arg=0):
	return map(int if arg == 0 else str, input().split())
for _ in range(int(input())):
	(n, x) = mapi()
	a = list(mapi())
	even = 0
	odd = 0
	for i in a:
		if i % 2:
			odd += 1
		else:
			even += 1
	f = 0
	i = 1
	while i <= odd:
		if x - i <= even:
			if even != 0 or x == i:
				f = 1
				break
		i += 2
	if f:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(oc, ec) = (0, 0)
	for i in a:
		if i % 2 == 0:
			ec += 1
		else:
			oc += 1
	f = 0
	for i in range(1, oc + 1, 2):
		if i > x:
			break
		j = min(i, x)
		if ec >= x - j:
			print('YES')
			f = 1
			break
	if f == 0:
		print('NO')


from sys import stdin
t = int(input())
for _ in range(t):
	(n, x) = list(map(int, stdin.readline().rstrip().split(' ')))
	arr = list(map(int, stdin.readline().rstrip().split(' ')))
	oddCount = 0
	evenCount = 0
	for ele in arr:
		if ele % 2 == 0:
			evenCount += 1
		else:
			oddCount += 1
	if oddCount == 0:
		print('No')
		continue
	if oddCount % 2 == 0:
		oddCount -= 1
	if evenCount == 0:
		if x <= oddCount and x % 2 == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	if x <= evenCount + oddCount:
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
st = lambda : list(stdin.readline().strip())
li = lambda : list(map(int, stdin.readline().split()))
mp = lambda : map(int, stdin.readline().split())
inp = lambda : int(stdin.readline())
pr = lambda n: stdout.write(str(n) + '\n')
mod = 1000000007
INF = float('inf')

def solve():
	(n, k) = mp()
	l = li()
	(o, e) = (0, 0)
	for i in l:
		o += i % 2
		e += i % 2 == 0
	if o == 0:
		pr('No')
		return
	if k % 2 == 0:
		for i in range(1, e + 1, 2):
			if k - i <= o:
				pr('Yes')
				return
		pr('No')
	else:
		for i in range(0, e + 1, 2):
			if k - i <= o:
				pr('Yes')
				return
		pr('No')
for _ in range(inp()):
	solve()


def sol():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		A = [int(i) for i in input().split()]
		odd = 0
		for i in range(n):
			if A[i] % 2 == 1:
				odd += 1
		even = n - odd
		p = False
		z = min(odd, x) + 1
		for i in range(1, z, 2):
			if even >= x - i:
				p = True
				break
		print('YES' if p else 'NO')
sol()


import sys
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	evens = sum((1 for x in a if x % 2 == 0))
	odds = n - evens
	if not odds:
		print('No')
	else:
		odds -= 1
		x -= 1
		while x >= 2 and odds >= 2:
			x -= 2
			odds -= 2
		if evens >= x:
			print('Yes')
		else:
			print('No')


a = int(input())
for x in range(a):
	a = [int(x) for x in input().split()]
	b = [int(x) for x in input().split()]
	evens = 0
	odds = 0
	for x in range(a[0]):
		if b[x] % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds == a[0] and a[1] % 2 == 0:
		print('NO')
	elif evens == a[0]:
		print('NO')
	elif odds % 2 == 1 or odds + evens > a[1]:
		print('YES')
	else:
		print('NO')


t = int(input())
for _ in range(t):
	[n, x] = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	sum_odd = 0
	sum_even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			sum_even += 1
		else:
			sum_odd += 1
	if sum_odd == 0:
		print('NO')
		continue
	sum_odd = sum_odd - 1
	x = x - 1
	if x % 2 == 0:
		if sum_odd % 2 == 0:
			if sum_even + sum_odd >= x:
				print('Yes')
				continue
		elif sum_even + sum_odd - 1 >= x:
			print('Yes')
			continue
	elif sum_odd % 2 == 0:
		if sum_even >= 1 and sum_odd + sum_even >= x:
			print('Yes')
			continue
	elif sum_even >= 1 and sum_odd + sum_even - 1 >= x:
		print('YES')
		continue
	print('NO')


n = int(input())
ans = []
for i in range(n):
	(m, k) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for i in l:
		if i % 2 == 1:
			o += 1
		else:
			e += 1
	if k == m:
		if sum(l) % 2 == 1:
			s = 'Yes'
		else:
			s = 'No'
	elif o > 0 and e > 0:
		s = 'Yes'
	elif e == 0 and k % 2 == 0 or o == 0:
		s = 'No'
	else:
		s = 'Yes'
	ans.append(s)
for i in ans:
	print(i)


cases = int(input())
while cases > 0:
	cases -= 1
	(n, x) = input().split()
	(n, x) = (int(n), int(x))
	nums = input().split()
	nums = [int(n) for n in nums]
	odd_count = 0
	even_count = 0
	for n in nums:
		if n % 2:
			odd_count += 1
		else:
			even_count += 1
	if odd_count == 0:
		print('No')
		continue
	max_odd_count = odd_count - (odd_count + 1) % 2
	if x % 2 == 0:
		if even_count == 0:
			print('No')
			continue
		x -= 1
		even_count -= 1
	if x - max_odd_count <= even_count:
		print('Yes')
	else:
		print('No')


import sys
import math
from collections import defaultdict

def solve(test):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even = []
	odd = []
	for i in range(n):
		if a[i] & 1:
			odd.append(a[i])
		else:
			even.append(a[i])
	o = len(odd)
	e = len(even)
	if o == 0:
		print('No')
		return
	if o % 2 == 0:
		o -= 1
	if x & 1:
		if e >= x - o:
			print('Yes')
		else:
			print('No')
	elif x >= o:
		if e >= x - o:
			print('Yes')
		else:
			print('No')
	elif e >= 1:
		print('Yes')
	else:
		print('No')
test_cases = int(input())
for t in range(1, test_cases + 1):
	solve(t)


t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = e = 0
	for num in a:
		if num & 1:
			o += 1
		else:
			e += 1
	if o == 0:
		print('No')
		continue
	o = min(o, x)
	total = o if o & 1 else o - 1
	if total + e >= x:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for num in a:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	res = min(odd, x)
	if res == 0:
		print('No')
		continue
	if res % 2 == 0:
		res -= 1
	rest = x - res
	if even >= rest:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	A = list(map(int, input().split()))
	counte = 0
	counto = 0
	for i in range(n):
		if A[i] & 1:
			counto += 1
		else:
			counte += 1
	t = max(counte, counto)
	if x % 2 == 0:
		if x == n:
			if sum(A) % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif counto >= 1 and counte >= 1:
			print('Yes')
		else:
			print('No')
	elif x == n:
		if sum(A) % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif counto >= 1:
		print('Yes')
	else:
		print('No')


N = int(input())
for i in range(N):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(even_cnt, odd_cnt) = (0, 0)
	for j in range(n):
		if a[j] % 2 == 0:
			even_cnt += 1
		else:
			odd_cnt += 1
	odd_cnt -= (odd_cnt + 1) % 2
	if x % 2 == 0:
		if odd_cnt > 0 and even_cnt != 0 and (odd_cnt + even_cnt >= x):
			print('YES')
		else:
			print('NO')
	elif x % 2 != 0:
		if odd_cnt <= 0 or odd_cnt + even_cnt < x:
			print('NO')
		else:
			print('YES')


def sol(n, k, a):
	ev = od = 0
	for e in a:
		if e % 2 == 0:
			ev += 1
		else:
			od += 1
	if n == od and k % 2 == 0 or (k == n and od % 2 == 0) or od == 0:
		return 'No'
	else:
		return 'Yes'
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	v = sol(n, k, a)
	print(v)


for _ in range(int(input())):
	(size, limit) = map(int, input().split())
	array = list(map(int, input().split()))
	(odd, even, flag) = (0, 0, 0)
	for a in array:
		if a % 2:
			odd += 1
		else:
			even += 1
	for x in range(1, limit + 1, 2):
		if x <= odd and limit - x <= even:
			flag = 1
			break
	print('Yes' if flag else 'No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	values = list(map(int, input().split()))
	odd = 0
	for i in values:
		if i % 2 == 1:
			odd += 1
	if odd == 0:
		print('No')
	elif x == n:
		if sum(values) % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		even = n - odd
		if x % 2 == 1:
			if x <= odd:
				print('Yes')
			elif even >= 2:
				print('Yes')
			else:
				print('No')
		elif even >= 1:
			print('Yes')
		else:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	mod2 = []
	for i in a:
		mod2.append(i % 2)
	s = sum(mod2)
	if s > 0:
		if s == n and x % 2 == 0:
			print('No')
		elif s == n and x % 2 == 1:
			print('Yes')
		elif s % 2 == 1:
			print('Yes')
		elif s % 2 == 0:
			if x == n:
				print('No')
			else:
				print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	m = list(map(int, input().split()))
	(n, x) = (m[0], m[1])
	u = list(map(int, input().split()))
	(o, e) = (list(), list())
	for y in u:
		if y % 2 != 0:
			o.append(y)
		else:
			e.append(y)
	if x % 2 == 0:
		if len(e) != 0 and len(o) != 0:
			if len(e) >= x or len(o) >= x:
				print('Yes')
			elif len(o) % 2 != 0 and len(e) % 2 != 0:
				print('Yes')
			elif len(o) % 2 == 0:
				if len(e) >= x - (len(o) - 1):
					print('Yes')
				else:
					print('No')
			elif len(e) >= x - len(o):
				print('Yes')
			else:
				print('No')
		else:
			print('No')
	elif len(o) >= x:
		print('Yes')
	elif len(o) % 2 == 0:
		if len(e) >= x - (len(o) - 1) and len(o) != 0:
			print('Yes')
		else:
			print('No')
	elif len(e) >= x - len(o) and len(o) != 0:
		print('Yes')
	else:
		print('No')
	t -= 1


def solve(arr, n, k):
	if n < k:
		return 'NO'
	if n == k:
		if sum(arr) % 2 == 1:
			return 'YES'
		else:
			return 'NO'
	else:
		(odd, even) = ([], [])
		for i in range(n):
			if arr[i] % 2 == 0:
				even.append(arr[i])
			else:
				odd.append(arr[i])
		if len(odd) == 0:
			return 'NO'
		if len(even) == 0 and k % 2 == 0:
			return 'NO'
		else:
			return 'YES'
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	print(solve(arr, n, x))


def main():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		a = [int(a) for a in input().split()]
		p = list(filter(lambda i: i % 2 == 0, a))
		q = list(filter(lambda i: i % 2 != 0, a))
		c = 0
		for i in range(1, len(q) + 1, 2):
			if i + len(p) >= x:
				c = i
				break
		if c > 0 and x >= c:
			print('Yes')
		else:
			print('NO')
main()


for _ in range(int(input())):
	nums = list(map(int, input().split()))
	count = nums[1]
	list_of_nums = list(map(int, input().split()))
	count_of_nechetn = len(list(filter(lambda x: x % 2 == 1, list_of_nums)))
	if count > len(list_of_nums):
		print('No')
	elif count == len(list_of_nums):
		if sum(list_of_nums) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif count % 2 == 1:
		if count_of_nechetn > 0:
			print('Yes')
		else:
			print('No')
	elif count_of_nechetn > 0 and len(list_of_nums) - count_of_nechetn > 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for m in range(t):
	(n, x) = [int(i) for i in input().split()]
	a = sum([int(i) % 2 == 1 for i in input().split()])
	e = n - a
	if a == 0:
		print('No')
		continue
	if x >= a:
		if a % 2 == 0:
			if e >= x - a + 1:
				print('Yes')
			else:
				print('No')
		elif e >= x - a:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if e > 0:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


def iseven(x):
	return x % 2 == 0
for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	odd = []
	even = []
	for v in a:
		if v % 2 == 0:
			even.append(v)
		else:
			odd.append(v)
	if iseven(x) and len(even) == 0 or (n == x and iseven(len(odd))) or len(odd) == 0:
		print('No')
	else:
		print('Yes')


import math
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if even >= x:
		if odd >= 1:
			print('Yes')
		else:
			print('No')
	elif odd >= x:
		if x % 2 != 0:
			print('Yes')
		elif even >= 1:
			print('Yes')
		else:
			print('No')
	elif x - even == odd and odd % 2 != 0:
		print('Yes')
	elif x - even < odd:
		print('Yes')
	else:
		print('No')


t = int(input())
for z in range(t):
	(n, x) = map(int, input().split())
	lst = [int(i) for i in input().split()]
	odd = 0
	even = 0
	for i in lst:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif x % 2 == 1:
		if odd >= n:
			print('Yes')
		elif odd % 2 == 0:
			if x - odd + 1 <= even:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	elif even == 0:
		print('No')
	else:
		even -= 1
		x -= 1
		if odd % 2 == 0:
			if x - odd + 1 <= even:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')


import math
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	seq = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if seq[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0 or (odd == n and x % 2 == 0) or (x == n and odd % 2 == 0):
		print('NO')
	else:
		print('YES')


def count(a):
	e = 0
	o = 0
	for x in a:
		if x % 2:
			o += 1
		else:
			e += 1
	return (e, o)

def toInt(s):
	return int(s)

def solu(a, p):
	(n, m) = count(a)
	if m == 0:
		return False
	max_odd = m if m % 2 else m - 1
	if p == max_odd:
		return True
	if p < max_odd:
		if p % 2:
			return True
		elif n > 0:
			return True
		else:
			return False
	if p > max_odd:
		return p <= max_odd + n
nt = int(input())
for i in range(nt):
	val = input().split(' ')
	p = int(val[1])
	arr = input().split(' ')
	arr = map(toInt, arr)
	if solu(arr, p):
		print('Yes')
	else:
		print('No')


for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	s = 0
	for i in range(n):
		if a[i] % 2 != 0:
			s += 1
	if s == 0 or (n == x and s % 2 == 0) or (s == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')


t_test = int(input().strip())
while t_test > 0:
	(n, x) = list(map(int, input().strip().split(' ')))
	list_0 = list(map(int, input().strip().split(' ')))
	(odd_count, even_count) = (0, 0)
	for i in list_0:
		if i % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	if odd_count == 0:
		print('No')
	elif even_count == 0 and x % 2 == 0:
		print('No')
	elif n == x and odd_count % 2 == 0:
		print('No')
	else:
		print('Yes')
	t_test -= 1


def solve(a, n, x):
	(ev, od) = (0, 0)
	for i in range(n):
		if a[i] % 2 == 1:
			od += 1
		else:
			ev += 1
	if ev >= x:
		if od > 0:
			return 'Yes'
		else:
			return 'No'
	d = x - ev
	if d % 2:
		return 'Yes'
	if od > d and ev > 0:
		return 'Yes'
	return 'No'

def main():
	t = int(input())
	ans = [0] * t
	for tt in range(t):
		(n, x) = [int(i) for i in input().split()]
		a = [int(i) for i in input().split()]
		ans[tt] = solve(a, n, x)
	print('\n'.join(ans))
main()


import sys
from collections import defaultdict
readline = sys.stdin.buffer.readline

def geta(fn=lambda s: s.decode()):
	return map(fn, readline().split())

def gete(fn=lambda s: s.decode()):
	return fn(readline().rstrip())

def main():
	for _ in range(gete(int)):
		(n, x) = geta(int)
		a = tuple(geta(int))
		(odd, even) = (0, 0)
		for ai in a:
			if ai & 1 == 0:
				even += 1
			else:
				odd += 1
		if even == 0:
			print('Yes' if x & 1 == 1 else 'No')
		elif odd == 0:
			print('No')
		elif odd & 1 == 0:
			print('Yes' if 0 < x < len(a) else 'No')
		else:
			print('Yes' if 0 < x else 'No')
main()


t = int(input())
for i in range(t):
	ch = input()
	L = [int(i) for i in ch.split()]
	(n, x) = (L[0], L[1])
	x1 = x
	ch = input()
	L = [int(i) for i in ch.split()]
	nbp = 0
	nbi = 0
	for i in range(n):
		if L[i] % 2 == 0:
			nbp += 1
		else:
			nbi += 1
	if x1 == n:
		if sum(L) % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif nbi > 0 and nbp > 0 or (nbi > 0 and x % 2 == 1):
		print('YES')
	else:
		print('NO')


t = int(input())
n = []
x = []
a = []
for i in range(t):
	nx = list(map(int, input().split()))
	n.append(nx[0])
	x.append(nx[1])
	A = list(map(int, input().split()))
	odd = 0
	even = 0
	for j in A:
		if j % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd % 2 == 0 and odd != 0:
		odd -= 1
	a.append([odd, even])
for i in range(t):
	if a[i][0] == 0 or (a[i][1] == 0 and x[i] % 2 == 0) or a[i][0] + a[i][1] < x[i]:
		print('No')
	else:
		print('Yes')


def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for e in a:
		if e % 2 == 1:
			odd += 1
		else:
			even += 1
	if x % 2 == 1:
		(max_odd, max_even) = (odd, even)
		if max_odd % 2 == 0:
			max_odd -= 1
		if max_even % 2 == 1:
			max_even -= 1
		if max_odd >= 1 and max_odd + max_even >= x:
			print('Yes')
		else:
			print('No')
	else:
		(max_odd, max_even) = (odd, even)
		if max_odd % 2 == 0:
			max_odd -= 1
		if max_even % 2 == 0:
			max_even -= 1
		if max_odd >= 1 and max_even >= 1 and (max_odd + max_even >= x):
			print('Yes')
		else:
			print('No')
t = int(input())
for _ in range(t):
	solve()


test = int(input())
for _ in range(test):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in range(n):
		if arr[i] % 2:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
	else:
		if odd % 2 == 0:
			odd -= 1
		flag = False
		if x % 2:
			x -= min(odd, x)
			if x <= even:
				flag = True
		else:
			x -= min(x - 1, odd)
			if x <= even:
				flag = True
		if flag:
			print('Yes')
		else:
			print('No')


import sys
import math
import itertools
import functools
import collections
import operator
import fileinput
import copy
ORDA = 97

def ii():
	return int(input())

def mi():
	return map(int, input().split())

def li():
	return [int(i) for i in input().split()]

def lcm(a, b):
	return abs(a * b) // math.gcd(a, b)

def revn(n):
	return str(n)[::-1]

def dd():
	return collections.defaultdict(int)

def ddl():
	return collections.defaultdict(list)

def sieve(n):
	if n < 2:
		return list()
	prime = [True for _ in range(n + 1)]
	p = 3
	while p * p <= n:
		if prime[p]:
			for i in range(p * 2, n + 1, p):
				prime[i] = False
		p += 2
	r = [2]
	for p in range(3, n + 1, 2):
		if prime[p]:
			r.append(p)
	return r

def divs(n, start=1):
	r = []
	for i in range(start, int(math.sqrt(n) + 1)):
		if n % i == 0:
			if n / i == i:
				r.append(i)
			else:
				r.extend([i, n // i])
	return r

def divn(n, primes):
	divs_number = 1
	for i in primes:
		if n == 1:
			return divs_number
		t = 1
		while n % i == 0:
			t += 1
			n //= i
		divs_number *= t

def prime(n):
	if n == 2:
		return True
	if n % 2 == 0 or n <= 1:
		return False
	sqr = int(math.sqrt(n)) + 1
	for d in range(3, sqr, 2):
		if n % d == 0:
			return False
	return True

def convn(number, base):
	newnumber = 0
	while number > 0:
		newnumber += number % base
		number //= base
	return newnumber

def cdiv(n, k):
	return n // k + (n % k != 0)
ans = []
for _ in range(ii()):
	(n, x) = mi()
	a = li()
	(odd, even) = (0, 0)
	for i in range(n):
		if a[i] & 1:
			odd += 1
		else:
			even += 1
	if x & 1 and x <= odd or (odd & 1 and odd <= x) or (odd > 0 and even > 0 and (odd - 1 + even >= x)):
		print('YES')
	else:
		print('NO')


def main():
	t = int(input())
	for i in range(t):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		(parni, neparni) = (0, 0)
		for i in a:
			if i % 2 == 0:
				parni += 1
			else:
				neparni += 1
		if neparni == 0:
			print('No')
		elif x % 2 == 1:
			if neparni % 2 == 0:
				neparni -= 1
			if neparni >= x:
				print('Yes')
			elif parni >= x - neparni:
				print('Yes')
			else:
				print('No')
		elif x % 2 == 0:
			if neparni % 2 == 0:
				neparni -= 1
			if parni == 0:
				print('No')
			elif parni >= x - neparni:
				print('Yes')
			else:
				print('No')
main()


import sys
input = sys.stdin.buffer.readline

def getAns(x, a):
	nOdds = 0
	nEvens = 0
	for z in a:
		if z % 2 == 0:
			nEvens += 1
		else:
			nOdds += 1
	if nOdds == 0:
		return 'No'
	x -= 1
	nOdds -= 1
	if nOdds >= x:
		x -= x // 2 * 2
	else:
		x -= nOdds // 2 * 2
	if nEvens >= x:
		return 'Yes'
	else:
		return 'No'
t = int(input())
for _ in range(t):
	(n, x) = [int(z) for z in input().split()]
	a = [int(z) for z in input().split()]
	print(getAns(x, a))


a = int(input())
for fewfweefw in range(a):
	lst = input().split()
	nums = input().split()
	nums = [int(p) for p in nums]
	n = int(lst[0])
	x = int(lst[1])
	even = 0
	odd = 0
	for i in nums:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd > 0:
		if n == x and odd % 2 == 1 or x < n:
			if odd == n and x % 2 == 0:
				print('no')
			else:
				print('yes')
		else:
			print('no')
	else:
		print('no')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if lis[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	k = 0
	for j in range(1, min(odd, x) + 1, 2):
		if even >= x - j:
			k = 1
			break
	if x == 1:
		if odd >= 1:
			k = 1
	if k:
		print('yes')
	else:
		print('no')


import sys, io, os, time
ONLINE_JUDGE = __debug__
if not ONLINE_JUDGE:
	sys.stdin = open('../input.txt', 'r')
	sys.stdout = open('../output.txt', 'w')
start_time = time.time()
if ONLINE_JUDGE:
	input = sys.stdin.readline
from collections import defaultdict
from collections import OrderedDict
from collections import deque
from itertools import combinations
from itertools import permutations
import bisect, math, heapq
alphabet = 'abcdefghijklmnopqrstuvwxyz'
from functools import lru_cache
for ii in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in arr:
		if i % 2:
			odd += 1
		else:
			even += 1
	f = 0
	for i in range(1, min(odd + 1, x + 1), 2):
		left = x - i
		if left <= even:
			print('YES')
			f = 1
			break
	if not f:
		print('NO')
if not ONLINE_JUDGE:
	print('Time Elapsed :', time.time() - start_time, 'seconds')
sys.stdout.close()


import sys
import math
from decimal import *
t = int(sys.stdin.readline().strip())
for i in range(t):
	(n, x) = list(map(int, sys.stdin.readline().strip().split(' ')))
	l = list(map(int, sys.stdin.readline().strip().split(' ')))
	odds = [e for e in l if e % 2 == 1]
	even = [e for e in l if e % 2 == 0]
	if len(odds) <= 0:
		print('No')
	elif len(even) >= x:
		print('Yes')
	else:
		rest = x - len(even)
		if rest > len(odds):
			print('No')
		elif rest % 2 == 0:
			if len(odds) >= rest + 1 and len(even) - 1 >= 0:
				print('Yes')
			else:
				print('No')
		elif len(odds) >= rest:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	lol = [int(n) for n in input().split()]
	e = 0
	o = 0
	f = 0
	for i in lol:
		if i % 2 == 0 and i != 0:
			e += 1
		else:
			o += 1
	if o > 0 and o % 2 == 0:
		o -= 1
	if x & 1:
		if o >= 1 and o + e >= x:
			print('YES')
		else:
			print('NO')
	elif o + e >= x and e >= 1 and (o >= 1):
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	f = 0
	count_odd = 0
	count_even = 0
	for i in l:
		if i & 1:
			count_odd += 1
		else:
			count_even += 1
	if count_odd == 0 or (count_even == 0 and x % 2 == 0):
		print('No')
	elif count_even >= x - 1:
		print('Yes')
	elif (x - count_even) % 2 == 0:
		if count_odd > x - count_even:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


import sys
import math

def mp():
	return map(int, sys.stdin.readline().split())

def rs():
	return sys.stdin.readline().rstrip()

def ri():
	return int(sys.stdin.readline())

def ria():
	return list(map(int, sys.stdin.readline().split()))

def ws(s):
	sys.stdout.write(s + '\n')

def wi(n):
	sys.stdout.write(str(n) + '\n')

def wia(a):
	sys.stdout.write(' '.join([str(x) for x in a]) + '\n')

def main():
	(n, x) = mp()
	a = ria()
	odd = 0
	even = 0
	for i in a:
		if i & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		ws('No')
		return
	p = 1
	i = 1
	while i + 2 <= min(odd, x):
		i += 2
	p = i
	if even >= x - p:
		ws('Yes')
	else:
		ws('No')
t = ri()
for _ in range(t):
	main()


for _ in range(int(input())):
	(a, b) = input().split()
	a = int(a)
	b = int(b)
	e = 0
	o = 0
	l = [int(x) for x in input().split()]
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('NO')
	elif b > o:
		b = b - e
		if o > b:
			print('YES')
		elif o == b:
			if b % 2 == 0:
				print('NO')
			else:
				print('YES')
		else:
			print('NO')
	elif b % 2 == 0 and e > 0:
		print('YES')
	elif b % 2 == 0 and e == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	a = 0
	b = 0
	for j in l:
		if j % 2:
			a += 1
		else:
			b += 1
	if x % 2:
		ans = 'No'
		if a == 0:
			print('No')
		elif a >= x:
			print('Yes')
		else:
			for j in range(1, min(x + 1, a + 1), 2):
				if b >= x - j:
					ans = 'Yes'
					break
			print(ans)
	elif a == 0:
		print('No')
	else:
		ans = 'No'
		for j in range(1, min(x + 1, a + 1), 2):
			if b >= x - j:
				ans = 'Yes'
				break
		print(ans)


import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
testcases = int(input())
for j in range(testcases):
	(n, x) = map(int, input().split())
	vals = list(map(int, input().split()))
	odd = 0
	even = 0
	for s in range(n):
		if vals[s] % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 0:
		if even % 2 == 0 and even != 0:
			even -= 1
		if odd >= 1 and x <= even + odd and (even != 0):
			print('YES')
		else:
			print('NO')
	else:
		if even % 2 == 1:
			even -= 1
		if odd >= 1 and x <= even + odd:
			print('YES')
		else:
			print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	s = list(map(int, input().split()))
	odd = 0
	eve = 0
	for i in s:
		if i % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == 0 or (eve == 0 and x % 2 == 0) or (x == n and sum(s) % 2 == 0):
		print('NO')
	else:
		print('YES')


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
num_tests = inp()
for _ in range(num_tests):
	(length, x) = inlt()
	items = inlt()
	num_odd = 0
	num_even = 0
	for item in items:
		if item % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	found = False
	for i in range(1, x + 1, 2):
		if num_odd >= i and num_even >= x - i:
			print('Yes')
			found = True
			break
	if not found:
		print('No')


import sys
input = sys.stdin.readline
T = int(input())
for testcase in range(T):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for e in a:
		if e % 2 == 1:
			odd += 1
	even = n - odd
	if odd == 0:
		print('No')
	else:
		x -= 1
		odd -= 1
		if even >= x:
			print('Yes')
		elif x % 2 == 0:
			if odd // 2 * 2 + even >= x:
				print('Yes')
			else:
				print('No')
		elif even == 0:
			print('No')
		else:
			even -= 1
			x -= 1
			if odd // 2 * 2 + even >= x:
				print('Yes')
			else:
				print('No')


t = int(input())
while t > 0:
	(n, x) = list(map(int, input().strip(' ').split()))
	l = list(map(int, input().strip(' ').split()))
	if n == x:
		if sum(l) % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		even = []
		odd = []
		for i in l:
			if i % 2 == 1:
				odd.append(i)
			else:
				even.append(i)
		f = 1
		if len(odd) == 0:
			print('No')
			t = t - 1
			continue
		for i in range(0, len(even) + 1):
			for j in range(1, len(odd) + 1, 2):
				if i + j == x:
					f = 0
		if f == 0:
			print('Yes')
		else:
			print('No')
	t = t - 1


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	lo = 0
	le = 0
	for ch in arr:
		if ch % 2 == 0:
			le += 1
		else:
			lo += 1
	if lo > 0 and lo % 2 == 0:
		if le == 0 and x % 2 == 0:
			print('NO')
		else:
			lo -= 1
			if x - lo > le:
				print('NO')
			else:
				print('YES')
	elif lo > 0 and lo % 2 == 1:
		if le == 0 and x % 2 == 0:
			print('NO')
		elif x - lo > le:
			print('NO')
		else:
			print('YES')
	elif lo == 0:
		print('NO')


t = int(input())
for _ in range(t):
	(n, k) = [int(a) for a in input().split()]
	list1 = [int(a) for a in input().split()]
	count1 = 0
	count2 = 0
	flag = 0
	if k == n:
		if sum(list1) % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	for x in range(n):
		if list1[x] % 2 == 1:
			count1 = count1 + 1
		else:
			count2 = count2 + 1
		if count1 > 0 and count2 > 0:
			flag = 1
			break
	if flag == 1:
		print('Yes')
	elif count1 == 0:
		print('No')
	elif count2 == 0:
		if k % 2 == 0:
			print('No')
		else:
			print('Yes')


m = int(input())

def solve():
	(n, x) = map(int, input().split())
	e = 0
	o = 0
	vs = map(int, input().split())
	for v in vs:
		if v % 2 == 1:
			o += 1
		else:
			e += 1
	if o > 0:
		x -= 1
		o -= 1
		while o >= 2 and x >= 2:
			x -= 2
			o -= 2
		while e > 0 and x > 0:
			x -= 1
			e -= 1
		if x == 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
for i in range(m):
	solve()


t = int(input())
for _ in range(t):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if n == k:
		if sum(l) % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif odd == 0:
		print('No')
	elif even == 0 and k % 2 == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for i in a:
		if i % 2:
			odd += 1
		else:
			even += 1
	if x % 2:
		if x <= odd:
			print('YES')
		elif x > odd and odd != 0:
			if odd % 2 == 0:
				odd -= 1
			if odd + even >= x:
				print('Yes')
			else:
				print('NO')
		else:
			print('NO')
	elif x <= odd and even != 0:
		print('YES')
	elif x > odd and odd != 0:
		if odd % 2 == 0:
			odd -= 1
		if odd + even >= x:
			print('Yes')
		else:
			print('NO')
	else:
		print('NO')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(i) for i in input().split()]
	evens = [int(i) for i in a if i % 2 == 0]
	odds = [int(i) for i in a if i & 1]
	even = len(evens)
	odd = len(odds)
	if not odd:
		print('No')
	else:
		i = 1
		ans = 'No'
		while i <= odd and i <= x:
			if even >= x - i:
				ans = 'Yes'
				break
			else:
				i += 2
		print(ans)


exec("\ndef solve(odd,even,n,x):\n    if not odd:\n        return 'NO'\n    else:\n        for i in range(1,min(x,len(odd))+1,2):\n            if x-i<=len(even):\n                return 'YES'\n        return 'NO'\nfor _ in range(int(input())):\n    n,x=[int(x) for x in input().split()];odd=[];even=[];[even.append(int(x)) if int(x)%2==0 else odd.append(int(x)) for x in input().split()]\n    print(solve(odd,even,n,x))\n")


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	lst = list(map(int, input().split()))
	f = [0, 0]
	for i in lst:
		f[i % 2] += 1
	for i in range(1, min(x, f[1]) + 1, 2):
		need = x - i
		if need <= f[0]:
			print('YES')
			break
	else:
		print('NO')


import sys
input = iter(sys.stdin.read().splitlines()).__next__

def solve(N, X, A):
	if all((x % 2 == 0 for x in A)):
		return False
	if all((x % 2 == 1 for x in A)):
		return X % 2 == 1
	if X == N:
		return sum(A) % 2 == 1
	return True
TC = int(input())
for tc in range(TC):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	res = solve(N, X, A)
	print('Yes' if res else 'No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	left = max(0, k - even)
	if odd == 0:
		print('No')
	elif n == k and odd % 2 == 0:
		print('No')
	elif even == 0 and k % 2 == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2:
			odd += 1
		else:
			even += 1
	flag = False
	i = 1
	while i <= odd and i <= x:
		if x - i <= even:
			flag = True
		i += 2
	if flag:
		print('YES')
	else:
		print('NO')


t = int(input())
for i in range(t):
	(n, x) = input().split(' ')
	(n, x) = (int(n), int(x))
	array = input().split(' ')
	pair = 0
	odd = 0
	for i in array:
		if int(i) % 2 == 0:
			pair += 1
		else:
			odd += 1
	if odd < 1:
		print('No')
		continue
	odd -= 1
	x -= 1
	if x <= pair:
		print('Yes')
		continue
	x -= pair
	if x % 2 == 0:
		print('Yes')
		continue
	if pair > 0 and x + 1 <= odd:
		print('Yes')
		continue
	print('No')


ans = []
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	u = list(map(int, input().split()))
	cnt = 0
	for i in range(n):
		if u[i] % 2 == 0:
			cnt += 1
	if x % 2 == 1:
		if cnt == n or (x == n and cnt % 2 == 1):
			ans.append('No')
		else:
			ans.append('Yes')
	elif cnt == n or (x == n and cnt % 2 == 0) or cnt == 0:
		ans.append('No')
	else:
		ans.append('Yes')
print('\n'.join(ans))


for _ in range(int(input())):
	(a, b) = map(int, input().split())
	arr = list(map(int, input().split()))
	e = 0
	d = 0
	for j in arr:
		if j % 2 != 0:
			d += 1
		else:
			e += 1
	if d % 2 == 0:
		d -= 1
	if d <= 0:
		print('No')
	elif b % 2 != 0:
		if d + e >= b:
			print('Yes')
		else:
			print('No')
	elif e == 0:
		print('No')
	elif d + e >= b:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().strip().split())
	a = list(map(int, input().strip().split()))
	c_e = 0
	c_o = 0
	for i in a:
		if i % 2 == 0:
			c_e += 1
		else:
			c_o += 1
	if c_o == 0:
		print('No')
	elif x % 2 == 0 and c_e == 0:
		print('No')
	elif x == n and c_o % 2 == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().strip().split(' '))
	lst = list(map(int, input().strip().split(' ')))
	f = 0
	s = sum(lst[:x])
	if s % 2 != 0:
		f = 1
		print('Yes')
	else:
		odd_count1 = len(list(filter(lambda j: j % 2 != 0, lst[:x])))
		even_count1 = len(list(filter(lambda j: j % 2 == 0, lst[:x])))
		odd_count2 = len(list(filter(lambda j: j % 2 != 0, lst[x:])))
		even_count2 = len(list(filter(lambda j: j % 2 == 0, lst[x:])))
		if odd_count1 >= 1 and even_count2 >= 1 or (even_count1 >= 1 and odd_count2 >= 1):
			print('Yes')
			f = 1
	if f == 0:
		print('No')


ans = []
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	if n == x:
		s = sum(l)
		if s % 2 == 0:
			ans.append('No')
		else:
			ans.append('Yes')
	else:
		m = 0
		for i in l:
			if i % 2 == 0:
				continue
			else:
				m = 1
				break
		if m == 0:
			ans.append('No')
		else:
			for i in l:
				if i % 2 != 0:
					continue
				else:
					m = -1
					break
			if m == 1 and x % 2 == 0:
				ans.append('No')
			elif m == 1 and x % 2 != 0:
				ans.append('Yes')
			else:
				ans.append('Yes')
print(*ans, sep='\n')


import sys
input = lambda : sys.stdin.readline().rstrip()
inp = sys.stdin.buffer.readline

def I():
	return list(map(int, inp().split()))
for _ in range(I()[0]):
	(n, x) = I()
	a = I()
	cnt = [0, 0]
	flag = 0
	for i in a:
		cnt[i & 1] += 1
	for i in range(1, x + 1, 2):
		odd = i
		even = x - i
		if even <= cnt[0] and odd <= cnt[1]:
			flag = 1
	print(['No', 'Yes'][flag])


t = int(input())

def calc_mod(n):
	return n % 2
for i in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	odd = sum(map(calc_mod, A))
	even = n - odd
	for j in range(1, x + 1, 2):
		if odd >= j and even >= x - j:
			print('Yes')
			break
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		odd -= 1
		x = x - 1
		if x % 2 == 1:
			if even == 0:
				print('No')
				continue
			else:
				even -= 1
				x = x - 1
		if odd // 2 * 2 + even >= x:
			print('Yes')
		else:
			print('No')


n = int(input())

def solve(n, x, arr):
	odd = 0
	even = 0
	for v in arr:
		if v & 1 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		return 'No'
	else:
		x -= 1
		odd -= 1
		if x >= odd:
			if odd & 1 == 0:
				x -= odd
			else:
				x -= odd - 1
		elif x < odd:
			if x & 1 == 0:
				x -= odd
			else:
				x -= x - 1
		if x <= 0:
			return 'Yes'
		if x <= even:
			return 'Yes'
		return 'No'
for _ in range(n):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	print(solve(n, x, arr))


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = [int(v) for v in input().split()]
	o = 0
	e = 0
	for j in range(n):
		if a[j] % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	if max(x - e, 0) % 2 == 0:
		if e > 0 and o > max(x - e, 0):
			print('Yes')
		else:
			print('No')
	elif o >= x - e:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	(c, c1) = (0, 0)
	for i in range(len(l)):
		if l[i] % 2 == 1:
			c = c + 1
		else:
			c1 = c1 + 1
	f = 0
	if k < c and k % 2 == 1:
		f = 1
	elif k < c:
		if c1 >= 1 and c != 0:
			f = 1
	elif c == k and k % 2 == 1 and (c != 0):
		f = 1
	elif c <= k and c != 0:
		if c % 2 == 0:
			c = c - 1
		if k - c <= c1:
			f = 1
	if f == 0 or n < k:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	c = 0
	ce = 0
	for i in range(n):
		if a[i] % 2 == 1:
			c += 1
		else:
			ce += 1
	if c == 0:
		print('No')
		continue
	if c % 2 == 0:
		c -= 1
	if x >= c:
		x -= c
		if ce >= x:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0 and ce == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, k) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	if n == k:
		print('Yes') if sum(l) % 2 != 0 else print('No')
	elif n < k:
		print('No')
	else:
		e = o = 0
		for i in l:
			if i % 2 == 0:
				e += 1
			else:
				o += 1
		if k % 2 == 0:
			if e == 0:
				print('No')
			elif e % 2 == 0:
				if k > e:
					k = k - e + 1
					if o >= k:
						print('Yes')
					else:
						print('No')
				else:
					k = 1
					if o >= k:
						print('Yes')
					else:
						print('No')
			elif k > e:
				k -= e
				if o >= k:
					print('Yes')
				else:
					print('No')
			else:
				k = 1
				if o >= k:
					print('Yes')
				else:
					print('No')
		elif o == 0:
			print('No')
		elif e % 2 == 0:
			if k > e:
				k -= e
				if o >= k:
					print('Yes')
				else:
					print('No')
			else:
				k = 1
				if o >= k:
					print('Yes')
				else:
					print('No')
		elif k > e:
			k = k - e + 1
			if o >= k:
				print('Yes')
			else:
				print('No')
		else:
			k = 1
			if o >= k:
				print('Yes')
			else:
				print('No')


def odd_solver(numbers, m):
	even = len([num for num in numbers if num % 2 == 0])
	odd = len(numbers) - even
	if m == 0 or m > len(numbers) or odd == 0:
		return False
	if even == 0:
		return m % 2 == 1
	m -= even
	if m <= 1 or (m % 2 == 0 and odd > m) or (m % 2 == 1 and odd >= m):
		return True
	return False
tests = int(input())
for i in range(tests):
	line = input().split(' ')
	n = int(line[0])
	m = int(line[1])
	numbers = [int(num) for num in input().split(' ')]
	if odd_solver(numbers, m):
		print('YES')
	else:
		print('NO')


for case in range(int(input())):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	if x > n or n <= 0:
		print('No')
		continue
	(even, odd) = (0, 0)
	for i in a:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if odd % 2 == 1:
		if x % 2 == 1:
			print('Yes')
		elif even > 0:
			print('Yes')
		else:
			print('No')
		continue
	elif odd == 0:
		print('No')
	elif odd - 1 <= x:
		if odd - 1 + even >= x:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if even > 0:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


def f(x, a):
	if x == len(a):
		if sum(a) % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	p = [i % 2 for i in a]
	if sum(p) == 0:
		return 'No'
	elif sum(p) == len(p):
		if x % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	else:
		return 'Yes'
t = int(input())
for i in range(t):
	nx = input().rstrip().split()
	x = int(nx[1])
	a2 = input().rstrip().split()
	a = [int(i) for i in a2]
	print(f(x, a))


t = int(input())
while t > 0:
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	eve = 0
	odd = 0
	for ele in a:
		if ele % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == 0 or (x == n and odd % 2 == 0) or (odd == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')
	t = t - 1


for t in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = sum((x % 2 == 0 for x in l))
	o = len(l) - e
	if o == 0:
		print('NO')
	elif o == n:
		print('YNEOS'[x % 2 == 0::2])
	elif x == n:
		print('YNEOS'[o % 2 == 0::2])
	else:
		print('YES')


from __future__ import division, print_function
import itertools
import sys
import os
from io import BytesIO, IOBase
if sys.version_info[0] < 3:
	input = raw_input
	range = xrange
	filter = itertools.ifilter
	map = itertools.imap
	zip = itertools.izip

def is_it_local():
	script_dir = str(os.getcwd()).split('/')
	username = 'dipta007'
	return username in script_dir

def READ(fileName):
	if is_it_local():
		sys.stdin = open(f'./{fileName}', 'r')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
if not is_it_local():
	(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
	input = lambda : sys.stdin.readline().rstrip('\r\n')

def input1(type=int):
	return type(input())

def input2(type=int):
	[a, b] = list(map(type, input().split()))
	return (a, b)

def input3(type=int):
	[a, b, c] = list(map(type, input().split()))
	return (a, b, c)

def input_array(type=int):
	return list(map(type, input().split()))

def input_string():
	s = input()
	return list(s)

def main():
	t = input1()
	for ci in range(t):
		(n, m) = input2()
		arr = input_array()
		odd = 0
		even = 0
		for v in arr:
			if v % 2 == 0:
				even += 1
			else:
				odd += 1
		flg = 0
		for i in range(1, odd + 1, +2):
			baki = m - i
			if baki >= 0 and baki <= even:
				flg = 1
				break
		if flg:
			print('Yes')
		else:
			print('No')
	pass
main()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	ls = [int(a) for a in input().split()]
	(evn, odd) = ([], [])
	for j in range(len(ls)):
		if ls[j] % 2:
			odd.append(ls[j])
		else:
			evn.append(ls[j])
	if len(odd) > 0:
		os = min(len(odd), x)
		if os % 2 == 0:
			os -= 1
		os = x - os
		if os <= len(evn):
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


def solve():
	(n, x) = [int(v) for v in input().split()]
	arr = [int(v) for v in input().split()]
	(odd, even) = (0, 0)
	for v in arr:
		if v % 2 != 0:
			odd += 1
		else:
			even += 1
	for odc in range(x + 1):
		evc = x - odc
		if evc > even or odc > odd:
			continue
		if (odc * 1 + evc * 2) % 2 != 0:
			print('Yes')
			return
	print('No')
t = int(input())
for _ in range(t):
	solve()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = 0
	eve = 0
	for i in lis:
		if i % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == 0 or (x == n and odd % 2 == 0) or (eve == 0 and x % 2 == 0):
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	o = len([i for i in list(map(int, input().split())) if i % 2])
	e = n - o
	c = 0
	for i in range(x + 1):
		if (x - i) % 2 == 1 and x - i <= o and (i <= e):
			print('Yes')
			c = 1
			break
	if c == 0:
		print('No')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = 0
	e = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	for i in range(1, min(o, x) + 1, 2):
		if x - i <= e:
			print('YES')
			break
	else:
		print('NO')
	t -= 1


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	arr = [1 if arr[i] % 2 == 1 else 0 for i in range(n)]
	arr = sorted(arr)
	arr = arr[::-1]
	odd = 0
	even = 0
	total = sum(arr)
	temp = arr[0:x]
	if temp.count(1) % 2 == 1:
		print('yes')
	elif temp[0] == 1 and temp.count(0) < arr.count(0):
		print('yes')
	else:
		print('no')


t = int(input())
c = []
for i in range(t):
	p = list(map(int, input().split()))
	q = list(map(int, input().split()))
	n = p[0]
	x = p[1]
	if x == 1:
		for j in range(len(q)):
			if q[j] % 2 != 0:
				r = 'Yes'
				break
			else:
				r = 'No'
	elif n == x:
		s = sum(q)
		if s % 2 != 0:
			r = 'Yes'
		else:
			r = 'No'
	elif x % 2 == 0:
		a = 0
		b = 0
		for j in range(len(q)):
			if q[j] % 2 != 0:
				a = 1
				break
		for j in range(len(q)):
			if q[j] % 2 == 0:
				b = 1
				break
		if a == 1 and b == 1:
			r = 'Yes'
		else:
			r = 'No'
	else:
		a = 0
		for j in range(len(q)):
			if q[j] % 2 != 0:
				a = 1
				break
		if a == 1:
			r = 'Yes'
		else:
			r = 'No'
	c.append(r)
for i in range(len(c)):
	print(c[i])


def fun(even, odd, n, x):
	if odd == 0:
		return 'No'
	if odd % 2 == 0:
		odd -= 1
	if odd <= x:
		x -= odd
		if even < x:
			return 'No'
		else:
			return 'Yes'
	elif x % 2 == 1:
		return 'Yes'
	elif even > 0:
		return 'Yes'
	else:
		return 'No'
for _ in range(int(input())):
	(n, x) = [int(c) for c in input().split()]
	a = [int(c) for c in input().split()]
	even = 0
	for r in a:
		if r % 2 == 0:
			even += 1
	odd = n - even
	print(fun(even, odd, n, x))


for _ in range(int(input())):
	(n, m) = map(int, input().split())
	A = list(map(int, input().split()))
	ch = 0
	nch = 0
	for i in range(n):
		if A[i] % 2 == 1:
			nch += 1
		else:
			ch += 1
	if n == m:
		if sum(A) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif ch > 0 and nch > 0:
		print('Yes')
	elif nch > 0 and m % 2 == 1:
		print('Yes')
	else:
		print('No')


import sys
import math
try:
	sys.stdin = open('Input.txt', 'r')
	sys.stdout = open('Output.txt', 'w')
except:
	pass
input = sys.stdin.readline
for testCases in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i & 1:
			odd += 1
		else:
			even += 1
	for odds in range(1, odd + 1, 2):
		if odds <= x and x - odds <= even:
			print('Yes')
			break
		else:
			pass
	else:
		print('No')


from sys import stdin, stdout
t = int(input())
for _ in range(t):
	(n, x) = map(int, stdin.readline().strip().split())
	nums = list(map(int, stdin.readline().strip().split()))
	(evencount, oddcount) = (0, 0)
	for num in nums:
		if num % 2 == 0:
			evencount += 1
		else:
			oddcount += 1
	ans = 'NO'
	for i in range(1, min(oddcount, x) + 1, 2):
		if x - i <= evencount:
			ans = 'YES'
			break
	print(ans)


import sys
reader = (s.rstrip() for s in sys.stdin)
input = reader.__next__

def gift():
	for _ in range(t):
		(n, x) = list(map(int, input().split()))
		arry = list(map(int, input().split()))
		(odd, even) = (0, 0)
		for ele in arry:
			if ele % 2:
				odd += 1
			else:
				even += 1
		if x < n:
			if even > 0:
				if odd > 0:
					yield 'YES'
				else:
					yield 'NO'
			elif x % 2 == 0:
				yield 'NO'
			else:
				yield 'YES'
		elif odd % 2 == 0:
			yield 'NO'
		else:
			yield 'YES'
t = int(input())
ans = gift()
print(*ans, sep='\n')


def solve(ls, n, x):
	evens = 0
	odds = 0
	for val in ls:
		if val % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds <= 0:
		return False
	if x % 2 == 0:
		a = x - 1
	else:
		a = x
	if odds % 2 == 0:
		x = x - min(odds - 1, a)
		if evens >= x:
			return True
		else:
			return False
	if odds % 2 == 1:
		x = x - min(a, odds)
		if evens >= x:
			return True
		else:
			return False

def read():
	t = int(input())
	for i in range(t):
		(n, x) = list(map(int, input().strip().split()))
		ls = list(map(int, input().strip().split()))
		if solve(ls, n, x):
			print('Yes')
		else:
			print('No')
read()


T = int(input())

def countEvens(arr):
	ret = 0
	for el in arr:
		if el % 2 == 0:
			ret += 1
	return ret
while T > 0:
	(n, x) = [int(el) for el in input().split(' ')]
	arr = [int(el) for el in input().split(' ')]
	evens = countEvens(arr)
	odds = n - evens
	if odds >= 1:
		if x % 2 == 0 and evens == 0:
			print('No')
		else:
			if (x - evens) % 2 == 0:
				odds = odds - 1
			if x - evens <= odds:
				print('Yes')
			else:
				print('No')
	else:
		print('No')
	T -= 1


def dynamic(odd, even, total):
	if total % 2 == 0 and even == 0:
		return 'NO'
	if odd % 2 == 1:
		return 'YES'
	odd -= 1
	if odd > 0 and odd + even >= total and (odd % 2 == 1):
		return 'YES'
	return 'NO'
for _ in range(int(input())):
	(n, total) = map(int, input().split())
	odd = 0
	even = 0
	arr = list(map(int, input().split()))
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	print(dynamic(odd, even, total))


import math
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2:
			print('Yes')
		else:
			print('No')
	elif x == 1:
		f = 1
		for i in a:
			if i % 2:
				print('Yes')
				f = 0
				break
		if f:
			print('No')
	else:
		e = 0
		o = 0
		for i in a:
			if i % 2:
				o += 1
			else:
				e += 1
		if o == 0:
			print('No')
		elif x % 2:
			if o >= x:
				print('Yes')
			elif o % 2 and e >= x - o:
				print('Yes')
			elif o % 2 == 0 and e >= x + 1 - o:
				print('Yes')
			else:
				print('No')
		elif e == 0:
			print('No')
		elif e >= x and o > 0:
			print('Yes')
		elif e < x:
			if e % 2 and o >= x - e:
				print('Yes')
			elif e % 2 == 0 and o >= x + 1 - e:
				print('Yes')
			else:
				print('No')
		else:
			print('No')


from sys import stdin
input = stdin.readline

def main():
	test = int(input())
	for t in range(test):
		l = [int(i) for i in input().split(' ')]
		n = l[0]
		x = l[1]
		l = [int(i) for i in input().split(' ')]
		odd = 0
		even = 0
		for i in range(n):
			if l[i] % 2 == 0:
				even += 1
			else:
				odd += 1
		if even >= x - 1 and odd >= 1:
			print('Yes')
		elif even == 0:
			if x % 2 == 0 or x > odd:
				print('No')
			else:
				print('Yes')
		elif even < x - 1:
			x = x - even
			if x % 2 != 1:
				x += 1
			if x <= odd:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
main()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	cnt = 0
	if x == 1 and n == 1:
		if A[0] % 2 == 1:
			print('YES')
		else:
			print('NO')
		continue
	for a in A:
		if a % 2 == 1:
			cnt += 1
	if cnt == 0:
		print('NO')
		continue
	if cnt == n:
		if x % 2 == 1:
			print('YES')
		else:
			print('NO')
		continue
	if cnt % 2 == 1:
		print('YES')
	elif x != n:
		print('YES')
	else:
		print('NO')


from sys import stdin
T = int(stdin.readline().strip())
for caso in range(T):
	(n, m) = map(int, stdin.readline().strip().split())
	s = list(map(int, stdin.readline().strip().split()))
	p = 0
	im = 0
	for i in s:
		if i % 2 == 0:
			p += 1
		else:
			im += 1
	lim = min(m + 1, p + 1)
	f = False
	for i in range(lim):
		x = m - i
		if x <= im and x % 2 != 0:
			f = True
			break
	if f:
		print('Yes')
	else:
		print('No')


import sys
import heapq
import math
import random

def input():
	return sys.stdin.readline().strip()

def iinput():
	return int(input())

def rinput():
	return map(int, input().split())

def rlinput():
	return list(map(int, input().split()))

def srlinput():
	return sorted(list(map(int, input().split())))

def main():
	(n, x) = rinput()
	w = sum([int(i) % 2 for i in rlinput()])
	if w > 0 and (n > w and (w % 2 == 0 and x != n or w % 2) or (x % 2 and n == w)):
		print('YES')
	else:
		print('NO')
for i in range(iinput()):
	main()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	o = 0
	e = 0
	for j in l:
		if j % 2 == 0:
			e += 1
		else:
			o += 1
	if x % 2 != 0:
		if o >= x:
			print('YES')
		elif o == 0:
			print('NO')
		elif o % 2 != 0:
			x -= o
			if e >= x:
				print('YES')
			else:
				print('NO')
		else:
			x = x - o + 1
			if e >= x:
				print('YES')
			else:
				print('NO')
	elif o >= x:
		x = 1
		if e >= x:
			print('YES')
		else:
			print('NO')
	elif o == 0:
		print('NO')
	else:
		if o % 2 != 0:
			x -= o
		else:
			x = x - o + 1
		if e >= x:
			print('YES')
		else:
			print('NO')


t = int(input())
while t:
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	c_odd = 0
	c_even = 0
	for item in arr:
		if item % 2 == 0:
			c_even += 1
		else:
			c_odd += 1
	if n == x:
		if c_odd % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif c_odd == 0:
		print('No')
	else:
		rem = x - 1
		c_odd -= 1
		if rem >= c_odd / 2 * 2:
			rem = rem - c_odd / 2 * 2
			if rem <= c_even:
				print('Yes')
			else:
				print('No')
		elif rem % 2 == 0:
			print('Yes')
		elif c_even == 0:
			print('No')
		else:
			print('Yes')
	t -= 1


def solve(arr, x):
	odds = 0
	evens = 0
	for n in arr:
		if n % 2 == 0:
			evens += 1
		else:
			odds += 1
	for o in range(1, odds + 1, 2):
		if x - o == 0:
			return 'yes'
		if x - o > 0 and x - o <= evens:
			return 'Yes'
	return 'No'
t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().strip().split()]
	arr = [int(x) for x in input().strip().split()]
	print(solve(arr, x))


T = int(input())

def main():
	(n, x) = tuple(map(int, input().split()))
	arr = list(map(int, input().split()))
	even_count = 0
	odd_count = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even_count = even_count + 1
		else:
			odd_count = odd_count + 1
	if odd_count % 2 == 0:
		if odd_count == 0:
			return 'NO'
		if odd_count - 1 + even_count >= x and even_count > 0:
			return 'YES'
		if x % 2 == 1 and odd_count - 1 >= x:
			return 'YES'
		else:
			return 'NO'
	elif x % 2 == 0:
		if even_count > 0:
			return 'YES'
		else:
			return 'NO'
	else:
		return 'YES'
for i in range(T):
	print(main())


t = int(input())
while t:
	inp1 = list(map(int, input().strip().split()))[:2]
	(n, x) = (inp1[0], inp1[1])
	arr = list(map(int, input().strip().split()))[:n]
	if x == n:
		if sum(arr) % 2:
			print('Yes')
		else:
			print('No')
	else:
		odd = 0
		even = 0
		for i in arr:
			if i % 2:
				odd += 1
			else:
				even += 1
		if x % 2 == 0:
			if odd == 0:
				print('No')
			elif even == 0:
				print('No')
			else:
				print('Yes')
		elif odd == 0:
			print('No')
		else:
			print('Yes')
	t -= 1


t = int(input())
for i in range(t):
	s = input().split()
	n = int(s[0])
	x = int(s[1])
	s = input().split()
	for j in range(n):
		s[j] = int(s[j])
	l = []
	for j in range(n):
		l.append(s[j] % 2)
	e = l.count(0)
	o = l.count(1)
	if x == n:
		if o % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	elif n == o and x % 2 == 0 or n == e:
		print('No')
		continue
	else:
		print('Yes')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(c1, c0, ans) = (0, 0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			c0 += 1
		else:
			c1 += 1
	for i in range(x + 1):
		if x - i <= c0 and i <= c1 and (i % 2 == 1):
			ans = 1
			break
	if ans == 1:
		print('Yes')
	else:
		print('No')


number = int(input())
for iTest in range(number):
	inputStr = str(input())
	(n, x) = list(map(int, inputStr.split(' ')))
	inputStr = str(input())
	arr = list(map(int, inputStr.split(' ')))
	if n == 1:
		if arr[0] % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		evens = 0
		odds = 0
		for i in range(n):
			if arr[i] % 2 == 0:
				evens += 1
			else:
				odds += 1
		if odds == 0:
			print('No')
		elif evens == 0:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif x < n:
			print('Yes')
		elif odds % 2 == 0:
			print('No')
		else:
			print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	co = 0
	for xx in a:
		if xx % 2 == 1:
			co = co + 1
	ce = n - co
	if co == 0:
		print('No')
		continue
	else:
		i = 1
		f = 0
		while i <= co and i <= x:
			if ce >= x - i:
				f = 1
				break
			else:
				i = i + 2
		if f == 1:
			print('Yes')
		else:
			print('No')


from sys import stdin
import math
t = int(stdin.readline())
for _ in range(t):
	(n, x) = (int(var) for var in input().split())
	integers = [int(var) for var in input().split()]
	odd = 0
	for inte in integers:
		if inte % 2 != 0:
			odd += 1
	if odd == 0 or x > n:
		print('No')
	else:
		even = n - odd
		if odd % 2 == 0:
			odd -= 1
		x -= min(odd, x - (x + 1) % 2)
		if x > even:
			print('No')
		else:
			print('Yes')


for _ in range(int(input())):
	(n, x) = [int(x) for x in input().split()]
	a = list(map(int, input().split()))
	o = []
	e = []
	for i in a:
		if i % 2:
			o.append(i)
		else:
			e.append(i)
	if len(o) == 0:
		print('NO')
	elif x % 2 == 0 and len(e) == 0:
		print('NO')
	elif x == n and len(o) % 2 == 0:
		print('NO')
	else:
		print('YES')


a = int(input())
for i in range(a):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	list = [int(y) for y in input().split()]
	c = 0
	for j in range(len(list)):
		if list[j] % 2 == 1:
			c += 1
	if c == len(list) and x % 2 == 1:
		print('Yes')
	elif c == len(list) and x % 2 == 0:
		print('No')
	elif c == 0:
		print('No')
	elif c % 2 == 0 and x == len(list):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	f_line = list(map(int, input().rstrip().split()))
	(n, x) = (f_line[0], f_line[1])
	arr = list(map(int, input().rstrip().split()))
	odds = 0
	even = 0
	for j in arr:
		if j % 2 == 0:
			even += 1
		else:
			odds += 1
	if odds == 0:
		print('NO')
		continue
	i = min(odds, x)
	if i % 2 == 0:
		i -= 1
	if even >= x - i:
		print('YES')
	else:
		print('NO')


for cas in range(int(input())):
	(n, x) = map(int, input().split())
	num = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in range(n):
		if num[i] & 1:
			odd += 1
		else:
			even += 1
	if even >= x and odd >= 1:
		print('Yes')
	elif even >= x and odd == 0:
		print('No')
	elif even == 0 and x % 2 == 0:
		print('No')
	elif even < x:
		t = x - even
		if True:
			if t & 1:
				print('Yes')
			elif t + 1 <= odd:
				print('Yes')
			else:
				print('No')


count = int(input())
for i in range(count):
	(n, x) = map(int, input().split(' '))
	line = map(int, input().split(' '))
	(odd, even) = (0, 0)
	for l in line:
		odd += 1 if l % 2 == 1 else 0
		even += 1 if l % 2 == 0 else 0
	if n == x and odd % 2 == 0:
		print('No')
	elif odd == 0:
		print('No')
	elif even == 0 and x % 2 == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	ok = False
	for i in range(1, x + 1, 2):
		if odd >= i and even >= x - i:
			ok = True
	if ok:
		print('Yes')
	else:
		print('No')


import os
import sys
if os.path.exists('/mnt/c/Users/Square/square/codeforces'):
	f = iter(open('A.txt').readlines())

	def input():
		return next(f)
else:
	input = lambda : sys.stdin.readline().strip()
fprint = lambda *args: print(*args, flush=True)
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	evens = len([i for i in a if i % 2 == 0])
	odds = len([i for i in a if i % 2 != 0])
	if x == len(a):
		if sum(a) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif odds != 0 and evens != 0:
		print('Yes')
	elif evens == 0 and x % 2 == 0:
		print('No')
	elif odds == 0:
		print('No')
	else:
		print('Yes')


def odd_selection(n, x, a):
	n_odd = 0
	n_even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			n_even += 1
		else:
			n_odd += 1
	if n_odd == n:
		if x % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	elif x > n or n_even == n:
		return 'No'
	elif n_odd % 2 == 0:
		if n_odd - 1 + n_even >= x:
			return 'Yes'
		else:
			return 'No'
	else:
		return 'Yes'
T = int(input())
for i in range(T):
	(n, x) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	print(odd_selection(n, x, a))


t = int(input())
list_yes_no = []
for i in range(t):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	odd_counter = 0
	even_counter = 0
	list_a = input().split()
	for j in range(n):
		if int(list_a[j]) % 2 == 1:
			odd_counter += 1
		else:
			even_counter += 1
	odd_checker = False
	if odd_counter > 0:
		for j in range(1, odd_counter + 1, 2):
			if even_counter >= x - j >= 0:
				odd_checker = True
				list_yes_no.append('Yes')
				break
		if odd_checker == False:
			list_yes_no.append('No')
	else:
		list_yes_no.append('No')
print(*list_yes_no, sep='\n')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odds = 0
	evens = 0
	for i in a:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	if x % 2 and (x < n and odds) or (x == n and odds % 2):
		print('Yes')
	elif x % 2 == 0 and (x < n and (evens and odds)) or (x == n and odds % 2):
		print('Yes')
	else:
		print('No')


def solve(arr, n, x):
	if x == n:
		if sum(arr) % 2 != 0:
			return 'Yes'
		else:
			return 'No'
	else:
		selected_odd = [x for x in arr if x % 2 != 0]
		len_odd = len(selected_odd)
		len_even = n - len_odd
		flag = 0
		for i in range(1, min(len_odd, x) + 1, 2):
			have = len_even
			need = x - i
			if need <= len_even:
				flag = 1
		if flag == 1:
			return 'Yes'
		else:
			return 'No'

def main():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		arr = list(map(int, input().split()))
		ans = solve(arr, n, x)
		print(ans)
main()


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	vals = list(map(int, input().split()))
	odds = 0
	for v in vals:
		if v % 2 == 1:
			odds += 1
	evens = len(vals) - odds
	if x == n and odds % 2 == 0:
		print('No')
	elif odds == 0 or (evens == 0 and x % 2 == 0):
		print('No')
	else:
		print('Yes')


for t in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	no = ne = 0
	for i in arr:
		if i % 2 == 0:
			ne += 1
		else:
			no += 1
	if no == 0:
		print('No')
	elif ne == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif ne >= x - 1:
		print('Yes')
	else:
		rem = x - ne
		if rem % 2 == 0:
			if no % 2 == 0:
				v = no - 1
				if x - v <= ne:
					print('Yes')
				else:
					print('No')
			else:
				print('Yes')
		else:
			print('Yes')


import math, sys, os
from io import BytesIO, IOBase
mod = 10 ** 9 + 7
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')

def minp():
	return map(int, sys.stdin.readline().rstrip().split())

def linp():
	return list(map(int, sys.stdin.readline().rstrip().split()))

def inp():
	return int(input())

def print_list(l):
	print(' '.join(map(str, l)))
for _ in range(inp()):
	(n, x) = minp()
	a = linp()
	odd = 0
	for i in range(n):
		if a[i] & 1:
			odd += 1
	if odd == 0 or (odd == n and (not x & 1)) or (not odd & 1 and n == x):
		print('No')
	else:
		print('Yes')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	arr = [int(arr) for arr in input().split()]
	odd = [i for i in arr if i % 2 == 1]
	even = [i for i in arr if i % 2 == 0]
	if len(odd) == 0 and x > 0:
		print('No')
	elif len(odd) >= x:
		if x % 2 == 1:
			print('Yes')
		elif x % 2 == 0 and len(even) > 0:
			print('Yes')
		else:
			print('No')
	elif len(odd) < x:
		if len(odd) % 2 == 1 and len(even) >= x - len(odd):
			print('Yes')
		elif len(odd) % 2 == 0 and len(even) >= x - len(odd) + 1:
			print('Yes')
		else:
			print('No')


def solve(o, e, x):
	if o == 0:
		return 'No'
	o -= 1
	x -= 1
	while x > 0:
		if o - 2 >= 0 and x - 2 >= 0:
			o -= 2
			x -= 2
		elif e > 0:
			e -= 1
			x -= 1
		else:
			return 'No'
	return 'Yes'
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	od = ev = 0
	for k in a:
		if k % 2 == 0:
			ev += 1
		else:
			od += 1
	print(solve(od, ev, x))


t = int(input())
while t != 0:
	(n, x) = map(int, input().split())
	even = 0
	odd = 0
	ar = list(map(int, input().split()))
	for i in range(0, n):
		if ar[i] % 2 == 1:
			odd = odd + 1
		else:
			even = even + 1
	if odd == 0 or (even + odd == x and odd % 2 == 0) or (even == 0 and x % 2 == 0):
		print('no')
	else:
		print('yes')
	t = t - 1


def solve():
	(n, x) = map(int, input().split())
	a = [int(i) for i in input().split()]
	countodd = 0
	counteven = 0
	for i in range(n):
		if a[i] % 2 == 1:
			countodd += 1
		else:
			counteven += 1
	if countodd == 0:
		print('No')
		return
	if countodd % 2 == 0:
		countodd -= 1
	if x % 2 == 0:
		even = 1
		odd = x - 1
	else:
		even = 0
		odd = x
	if odd - countodd > 0:
		even += odd - countodd
	if even <= counteven:
		print('Yes')
		return
	else:
		print('No')
		return
test = int(input())
for i in range(test):
	solve()


import sys

def gcd(a, b):
	if a > b:
		return gcd(b, a)
	if a == 0:
		return b
	return gcd(b % a, a)
pprint = lambda s: print(' '.join(map(str, s)))
input = lambda : sys.stdin.readline().strip()
ipnut = input
for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(lambda x: int(x) % 2, input().split()))
	pref = [0]
	a.sort(key=lambda x: x % 2)
	for i in range(n):
		pref.append(pref[-1] + a[i])
	f = False
	z = a.count(0)
	o = a.count(1)
	if n == x:
		if o % 2:
			print('YES')
		else:
			print('NO')
	elif o and (x % 2 == 0 and z or x % 2 == 1):
		print('Yes')
	else:
		print('no')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	c = 0
	for i in map(int, input().split()):
		if i % 2:
			c += 1
	if c == n:
		if x % 2:
			print('Yes')
		else:
			print('No')
	elif c == 0:
		print('No')
	elif x == n:
		if c % 2:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


from sys import stdin, stdout
import bisect
from bisect import bisect_left as bl
from bisect import bisect_right as br
import itertools
from collections import Counter
import collections
import math
import heapq
import re

def modinv(n, p):
	return pow(n, p - 2, p)

def cin():
	return map(int, sin().split())

def ain():
	return list(map(int, sin().split()))

def sin():
	return input()

def inin():
	return int(input())

def Divisors(n):
	l = []
	for i in range(1, int(math.sqrt(n) + 1)):
		if n % i == 0:
			if n // i == i:
				l.append(i)
			else:
				l.append(i)
				l.append(n // i)
	return l

def most_frequent(list):
	return max(set(list), key=list.count)

def GCD(x, y):
	while y:
		(x, y) = (y, x % y)
	return x

def ncr(n, r, p):
	t = fact[n] * (ifact[r] * ifact[n - r] % p) % p
	return t

def Convert(string):
	li = list(string.split(''))
	return li

def SieveOfEratosthenes(n):
	global prime
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	f = []
	for p in range(2, n):
		if prime[p]:
			f.append(p)
	return f
prime = []
q = []

def dfs(n, d, v, c):
	global q
	v[n] = 1
	x = d[n]
	q.append(n)
	j = c
	for i in x:
		if i not in v:
			f = dfs(i, d, v, c + 1)
			j = max(j, f)
	return j

def main():
	for _ in range(inin()):
		(n, x) = map(int, input().split())
		a = ain()
		eve = 0
		odd = 0
		for i in range(n):
			if a[i] % 2 == 0:
				eve += 1
			else:
				odd += 1
		if eve >= x:
			if odd >= 1:
				print('Yes')
			else:
				print('No')
		elif (x - eve) % 2 != 0:
			print('Yes')
		elif eve >= 1 and x != n:
			print('Yes')
		else:
			print('No')
py2 = round(0.5)
if py2:
	from future_builtins import ascii, filter, hex, map, oct, zip
	range = xrange
import os, sys
from io import IOBase, BytesIO
BUFSIZE = 8192

class FastIO(BytesIO):
	newlines = 0

	def __init__(self, file):
		self._file = file
		self._fd = file.fileno()
		self.writable = 'x' in file.mode or 'w' in file.mode
		self.write = super(FastIO, self).write if self.writable else None

	def _fill(self):
		s = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
		self.seek((self.tell(), self.seek(0, 2), super(FastIO, self).write(s))[0])
		return s

	def read(self):
		while self._fill():
			pass
		return super(FastIO, self).read()

	def readline(self):
		while self.newlines == 0:
			s = self._fill()
			self.newlines = s.count(b'\n') + (not s)
		self.newlines -= 1
		return super(FastIO, self).readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.getvalue())
			(self.truncate(0), self.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		if py2:
			self.write = self.buffer.write
			self.read = self.buffer.read
			self.readline = self.buffer.readline
		else:
			self.write = lambda s: self.buffer.write(s.encode('ascii'))
			self.read = lambda : self.buffer.read().decode('ascii')
			self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


def isEven(a):
	return a % 2 == 0

def isOdd(a):
	return a % 2 == 1
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	isPossible = True
	even = [a for a in A if isEven(a)]
	if len(even) == n:
		isPossible = False
	elif isEven(x) and len(even) == 0:
		isPossible = False
	elif x == n and isEven(n - len(even)):
		isPossible = False
	if isPossible:
		print('Yes')
	else:
		print('No')


def main():
	t = int(input())
	for i in range(t):
		(n, x) = map(int, input().split())
		count_odd = 0
		count_even = 0
		values = list(map(int, input().split()))
		for i in values:
			if i % 2 == 0:
				count_even += 1
			else:
				count_odd += 1
		if count_even >= x:
			min_odd = 1
		else:
			min_odd = x - count_even
			if min_odd % 2 == 0 and x != min_odd:
				min_odd += 1
		if count_odd >= min_odd and min_odd % 2 == 1:
			print('Yes')
		else:
			print('No')
main()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	ev = 0
	for i in range(n):
		if a[i] % 2 == 0:
			ev += 1
		else:
			odd += 1
	if x == n and odd % 2 == 0:
		print('No')
	elif x == n:
		print('Yes')
	elif x % 2 == 0 and ev > 0 and (odd > 0):
		print('Yes')
	elif x % 2 == 0:
		print('No')
	elif odd > 0:
		print('Yes')
	else:
		print('No')


no_test_cases = int(input())
for i in range(no_test_cases):
	inputs1 = [int(x) for x in input().split(' ')]
	(n, x) = (inputs1[0], inputs1[1])
	inputs2 = [int(x) for x in input().split(' ')]
	odd = 0
	even = 0
	for elem in inputs2:
		if elem % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0 or (x % 2 == 0 and even == 0) or (x == n and odd % 2 == 0):
		print('No')
	else:
		print('Yes')


from collections import Counter as C, defaultdict as D, deque as Q
from operator import itemgetter as I
from itertools import product as P
from bisect import bisect_left as BL, bisect_right as BR
from heapq import heappush as HPUSH, heappop as HPOP
from math import floor as MF, ceil as MC, gcd as MG, factorial as F, sqrt as SQRT, inf as INFINITY

def player1():
	print('')

def player2():
	print('')

def isPrime(n):
	for i in range(2, MC(SQRT(n)) + 1):
		if n % i == 0:
			return False
	return True

def main():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		odd = 0
		even = 0
		for v in a:
			if v & 1:
				odd += 1
			else:
				even += 1
		if odd == n and (not x & 1):
			print('no')
			continue
		if even == n:
			print('no')
			continue
		if odd & 1:
			if odd + even >= x:
				print('yes')
			else:
				print('NO')
		else:
			odd -= 1
			if odd + even >= x:
				print('yes')
			else:
				print('NO')
main()


import sys
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	oddCount = 0
	for i in range(n):
		if arr[i] % 2 == 1:
			oddCount += 1
	evenCount = n - oddCount
	if oddCount == 0:
		print('No')
		continue
	if x % 2 == 0:
		if oddCount > x:
			if evenCount > 0:
				print('Yes')
			else:
				print('No')
		elif oddCount % 2 == 0:
			if evenCount >= x - (oddCount - 1):
				print('Yes')
			else:
				print('No')
		elif evenCount >= x - oddCount:
			print('Yes')
		else:
			print('No')
	elif oddCount >= x:
		print('Yes')
	elif oddCount % 2 == 0:
		if evenCount >= x - (oddCount - 1):
			print('Yes')
		else:
			print('No')
	elif evenCount >= x - oddCount:
		print('Yes')
	else:
		print('No')


t = int(input())
for j in range(t):
	g = input().split()
	n = int(g[0])
	x = int(g[1])
	s = input().split()
	nch = 0
	k = 0
	for i in range(n):
		s[i] = int(s[i])
		if s[i] % 2 != 0:
			nch += 1
	ch = n - nch
	i = 1
	while i <= x and i <= nch:
		need = x - i
		if need <= ch:
			k += 1
		i += 2
	if k > 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	b = [i % 2 for i in a]
	nep = b.count(1)
	if nep % 2 == 0 and x == n or nep == 0 or (x % 2 == 0 and nep == n):
		print('NO')
	else:
		print('YES')


import sys
import math
import collections
from sys import stdin, stdout, setrecursionlimit
import bisect as bs
setrecursionlimit(2 ** 20)
M = 10 ** 9 + 7
T = int(stdin.readline())
for _ in range(T):
	(n, x) = list(map(int, stdin.readline().split()))
	a = list(map(int, stdin.readline().split()))
	e = 0
	o = 0
	for i in range(n):
		if a[i] % 2 == 0:
			e += 1
		else:
			o += 1
	res = False
	for i in range(0, e + 1, 1):
		if x - i < 0:
			break
		if (x - i) % 2 == 1:
			if x - i <= o:
				res = True
				break
	if res:
		print('Yes')
		continue
	print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split(' ')))
	nch = 0
	for i in range(n):
		if a[i] % 2 != 0:
			nch += 1
	ch = n - nch
	nch = min(x, nch)
	if nch > 0:
		if nch % 2 == 0:
			nch -= 1
			if nch <= 0:
				print('No')
			elif ch + nch >= x:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	else:
		print('No')


def ans(n, l, x):
	count_even = 0
	count_odd = 0
	for i in l:
		if i % 2 == 0:
			count_even += 1
		else:
			count_odd += 1
	if count_odd == 0:
		return 'NO'
	elif count_odd >= x and x % 2 != 0:
		return 'Yes'
	elif x % 2 != 0 and count_odd < x and (count_odd % 2 != 0):
		return 'Yes'
	elif x % 2 != 0 and count_odd < x and (n - 1 >= x):
		return 'Yes'
	elif x % 2 == 0 and count_odd <= x and (count_odd % 2 != 0):
		return 'Yes'
	elif x % 2 == 0 and count_odd >= x and (count_even > 0):
		return 'Yes'
	elif x % 2 == 0 and count_odd < x and (n - 1 >= x):
		return 'Yes'
	return 'No'
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	print(ans(n, l, x))


from __future__ import division, print_function
import os
import sys
from io import BytesIO, IOBase
if sys.version_info[0] < 3:
	from __builtin__ import xrange as range
	from future_builtins import ascii, filter, hex, map, oct, zip
from math import sqrt, floor, factorial, gcd
from collections import deque, Counter, defaultdict
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')

def print(*args, **kwargs):
	(sep, file) = (kwargs.pop('sep', ' '), kwargs.pop('file', sys.stdout))
	at_start = True
	for x in args:
		if not at_start:
			file.write(sep)
		file.write(str(x))
		at_start = False
	file.write(kwargs.pop('end', '\n'))
	if kwargs.pop('flush', False):
		file.flush()
if sys.version_info[0] < 3:
	(sys.stdin, sys.stdout) = (FastIO(sys.stdin), FastIO(sys.stdout))
else:
	(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
read = lambda : list(map(int, input().split(' ')))

def solve():
	for _ in range(int(input())):
		(n, x) = read()
		arr = read()
		s = 0
		ev_od = [0, 0]
		ev_od2 = [0, 0]
		flag = 0
		for i in range(n):
			if i < x:
				s += arr[i]
				ev_od2[arr[i] % 2] += 1
			else:
				ev_od[arr[i] % 2] += 1
		(even, odd) = ev_od
		(even2, odd2) = ev_od2
		if s % 2:
			print('Yes')
		elif even > 0 and odd2 > 0 or (odd > 0 and even2 > 0):
			print('Yes')
		else:
			print('No')
solve()


t = int(input())
while t != 0:
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	o = 0
	for l in A:
		if l % 2:
			o += 1
	e = n - o
	if o == 0:
		print('No')
	else:
		m = 1
		tmp = 0
		while m <= o:
			if x - m <= e and x - m >= 0:
				tmp = 1
				break
			m += 2
		if tmp == 1:
			print('Yes')
		else:
			print('No')
	t -= 1


t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().split()]
	s = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in range(n):
		if s[i] % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	odd -= 1
	x -= 1
	odd = odd - odd % 2
	flag = 0
	while odd >= 0:
		if x < 0:
			break
		if even >= x or x == 0:
			flag = 1
			break
		odd -= 2
		x -= 2
	if flag == 0:
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline
Q = int(input())
Query = []
for _ in range(Q):
	(N, K) = map(int, input().split())
	A = list(map(int, input().split()))
	Query.append((N, K, A))
for (N, K, A) in Query:
	dp = [0, 0]
	for a in A:
		dp[a % 2] += 1
	ok = False
	for i in range(K):
		num_odd = 2 * i + 1
		num_even = K - num_odd
		if 0 <= num_even <= dp[0] and 0 <= num_odd <= dp[1]:
			ok = True
			break
	print('Yes' if ok else 'No')


def solve(x, odd, even):
	if odd == 0:
		return False
	if odd % 2 == 0:
		odd -= 1
	if x % 2 == 0:
		if even == 0:
			return False
		even -= 1
		x -= 1
	return x - odd <= even
T = int(input())

def sol(x, odd, even):
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			return True
	return False
for t in range(T):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = len(list(filter(lambda x: x % 2, a)))
	even = n - odd
	if sol(x, odd, even):
		print('Yes')
	else:
		print('No')


t = int(input())
s = ''
while t > 0:
	(n, x) = map(int, input().split())
	list = [int(i) for i in input().split()]
	(eve, odd) = (0, 0)
	for i in range(0, n):
		if list[i] % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd >= 1 and x - 1 <= eve:
		s += 'Yes\n'
	elif odd >= 1:
		odd -= 1
		d = x - 1 - eve
		if d % 2 == 0 and d <= odd:
			s += 'Yes\n'
		elif d % 2 and d + 1 <= odd and (d + 1 < x):
			s += 'Yes\n'
		else:
			s += 'No\n'
	else:
		s += 'No\n'
	t -= 1
print(s)


from sys import stdin, stdout
t = int(input())
for _ in range(t):
	(n, x) = map(int, stdin.readline().strip().split())
	nums = list(map(int, stdin.readline().strip().split()))
	oddcount = 0
	evencount = 0
	for num in nums:
		if num % 2 == 1:
			oddcount += 1
		else:
			evencount += 1
	if oddcount == 0:
		print('NO')
	elif evencount == 0 and x % 2 == 0:
		print('NO')
	else:
		oddcount = oddcount - (0 if oddcount % 2 == 1 else 1)
		if x - oddcount <= evencount:
			print('YES')
		else:
			print('NO')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	if n == 1:
		if arr[0] % 2 == 0:
			print('No')
			continue
		print('Yes')
		continue
	even = 0
	odd = 0
	for j in arr:
		if j % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if odd == n:
		if x % 2 == 0:
			print('No')
			continue
		print('Yes')
		continue
	if odd % 2 == 0 and even % 2 == 0:
		if x == n:
			print('No')
			continue
		print('Yes')
		continue
	if odd % 2 == 0:
		if x == n:
			print('No')
			continue
		print('Yes')
		continue
	print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	list1 = list(map(int, input().split()))
	co = 0
	ce = 0
	for i in range(n):
		if list1[i] % 2 == 0:
			ce += 1
		else:
			co += 1
	if co > 0:
		if co % 2 == 0:
			co -= 1
		if x % 2 == 0:
			if co + ce >= x and ce > 0:
				print('Yes')
			else:
				print('No')
		elif co + ce >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


import sys
readline = sys.stdin.readline

def ns():
	return readline().rstrip()

def ni():
	return int(readline().rstrip())

def nm():
	return map(int, readline().split())

def nl():
	return list(map(int, readline().split()))
for _ in range(ni()):
	(n, x) = nm()
	arr = nl()
	nodd = sum((e % 2 for e in arr))
	neven = n - nodd
	if n == x:
		print('Yes' if nodd % 2 else 'No')
	else:
		print('Yes' if nodd > 0 and (neven > 0 or x % 2 == 1) else 'No')


def main():
	import sys
	input = sys.stdin.buffer.readline

	def GCD(x, y):
		while y:
			(x, y) = (y, x % y)
		return x

	def lcm(a, b):
		return a * b // GCD(a, b)

	def merge(a, start, mid, end, d):
		p = start
		q = mid + 1
		arr = [0] * (end - start + 1)
		k = 0
		coun = 0
		for i in range(start, end + 1):
			if p > mid:
				arr[k] = a[q]
				q += 1
				k += 1
			elif q > end:
				arr[k] = a[p]
				d[a[p]] += coun
				k += 1
				p += 1
			elif a[p] < a[q]:
				arr[k] = a[p]
				d[a[p]] += coun
				k += 1
				p += 1
			else:
				arr[k] = a[q]
				k += 1
				q += 1
				coun += 1
		for i in range(k):
			a[start] = arr[i]
			start += 1

	def mergesort(a, start, end, d):
		if start < end:
			mid = (start + end) // 2
			mergesort(a, start, mid, d)
			mergesort(a, mid + 1, end, d)
			merge(a, start, mid, end, d)

	def inversion(l):
		d = {}
		for i in l:
			d[i] = 0
		mergesort(l, 0, len(l) - 1, d)
		return d

	def binary_search_lower(A, low, high, k):
		if high - low != 1:
			mid = (low + high) // 2
			x = A[mid]
			if x >= k:
				return binary_search_lower(A, low, mid, k)
			else:
				return binary_search_lower(A, mid, high, k)
		if A[low] >= k:
			return low
		else:
			return high

	def binary_expo(x, n):
		if n == 0:
			return 1
		elif n % 2 == 0:
			return binary_expo(x * x, n // 2)
		else:
			return x * binary_expo(x * x, (n - 1) // 2)

	def modu_expo(x, n, m):
		if n == 0:
			return 1
		elif n % 2 == 0:
			return modu_expo(x * x % m, n // 2, m)
		else:
			return x * modu_expo(x * x % m, (n - 1) // 2, m) % m

	def eEuclid(c, m):
		if m == 0:
			global d
			global x
			global y
			d = c
			x = 1
			y = 0
		else:
			eEuclid(m, c % m)
			temp = x
			x = y
			y = temp - c // m * y

	def mod_Inv(c, m):
		eEuclid(c, m)
		return (x % m + m) % m

	def ncr(n, r, p):
		num = den = 1
		for i in range(r):
			num = num * (n - i) % p
			den = den * (i + 1) % p
		return num * pow(den, p - 2, p) % p
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		l = [int(y) for y in input().split()]
		e = 0
		o = 0
		for i in l:
			if i % 2 == 0:
				e += 1
			else:
				o += 1
		ans = 'No'
		if o == 0:
			print(ans)
			continue
		x1 = 1
		x2 = x - 1
		if x % 2 != 0:
			if x1 <= o and x2 <= e:
				ans = 'Yes'
			while x1 <= x and x >= 0:
				if x1 <= o and x2 <= e:
					ans = 'Yes'
					break
				x1 += 2
				x2 -= 2
		else:
			if x1 <= o and x2 <= e:
				ans = 'Yes'
			while x1 <= x - 1 and x2 >= 1:
				if x1 <= o and x2 <= e:
					ans = 'Yes'
					break
				x1 += 2
				x2 -= 2
		print(ans)
main()


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	b = list(map(int, input().split()))
	odd = 0
	even = 0
	for j in range(n):
		if b[j] % 2 == 0:
			even = even + 1
		odd = n - even
	if odd == 0 or (odd % 2 == 0 and x == n) or (even == 0 and x % 2 == 0):
		print('No')
	else:
		print('Yes')


x = int(input())
for i in range(x):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	e = 0
	o = 0
	for i in range(n):
		if a[i] % 2 == 0:
			e += 1
		else:
			o += 1
	d = x - min(e, x - 1)
	if d % 2 == 0:
		d += 1
	print('Yes') if o >= d and d <= x else print('No')


for t in range(int(input())):
	(dlug, k) = map(int, input().split())
	elementy = [int(x) % 2 for x in input().split()]
	i_nie = sum(elementy)
	i_par = dlug - i_nie
	if i_nie == 0:
		print('No')
		continue
	k -= 1
	i_nie -= 1
	i_nie_pom = i_nie // 2 * 2
	if k >= i_nie_pom:
		k -= i_nie_pom
		if k <= i_par:
			print('Yes')
		else:
			print('No')
	elif k % 2 == 0:
		print('Yes')
	elif i_par >= 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	odds = sum([i for i in map(lambda temp: int(temp) % 2, input().split())])
	if x != n and odds != n and (odds != 0) or (x == n and odds % 2) or (x % 2 and odds > x):
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(_, x) = map(int, input().split())
	(e, o) = (0, 0)
	for el in input().split():
		if int(el) % 2 == 0:
			e += 1
		else:
			o += 1
	x -= e
	if x <= 0:
		if o > 0 and e > 0:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if o > x and e > 0:
			print('Yes')
		else:
			print('No')
	elif o >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = [int(i) for i in input().split()]
	odds = 0
	evens = 0
	for i in l:
		if i % 2 == 1:
			odds += 1
		else:
			evens += 1
	if n == x:
		if odds % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif evens == 0 and x % 2 == 0 or odds == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	(odd, even) = (0, 0)
	zero = 0
	for i in range(n):
		if A[i] == 0:
			zero += 1
		elif A[i] % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd % 2 != 0 and odd != 0:
		if even == 0 and x % 2 != 0:
			print('Yes')
		elif even == 0 and x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif odd == 0:
		print('No')
	elif x < odd:
		if x % 2 != 0:
			print('Yes')
		elif even == 0:
			print('No')
		else:
			print('Yes')
	elif even + odd - 1 + zero >= x:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 != 0:
		if odd >= x:
			print('Yes')
			continue
		f = 0
		for i in range(1, x + 1, 2):
			if odd >= i and even >= x - i:
				f = 1
				break
		if f == 0:
			print('No')
		else:
			print('Yes')
	else:
		f = 0
		for i in range(1, x + 1, 2):
			if odd >= i and even >= x - i:
				f = 1
				break
		if f == 0:
			print('No')
		else:
			print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	c = [0, 0]
	for i in map(int, input().split()):
		c[i % 2] += 1
	if c[0] == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	if c[1] % 2 == 1:
		c[0] += max(c[1] - 1, 0)
		c[1] = 1
	else:
		c[0] += max(c[1] - 2, 0)
		c[1] = 2 if c[1] >= 2 else 0
	if x == n and c[1] % 2 == 0 or c[1] == 0:
		print('No')
	else:
		print('Yes')


def decide(a, x):
	numOdds = 0
	numEvens = 0
	for i in a:
		if i % 2 == 0:
			numEvens += 1
		else:
			numOdds += 1
	i = 1
	while i <= numOdds and i <= x:
		need = x - i
		if numEvens >= need:
			print('Yes')
			return
		i += 2
	print('No')
t = int(input())
for i in range(t):
	(n, x) = input().split()
	x = int(x)
	a = list(map(int, input().split()))
	decide(a, x)


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for num in a:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	found = False
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			print('Yes')
			found = True
			break
	if not found:
		print('No')


for t in range(int(input())):
	(n, x) = map(int, input().split())
	even = 0
	odd = 0
	for i in list(map(int, input().split())):
		if i % 2:
			odd += 1
		else:
			even += 1
	if odd:
		if odd % 2 == 0:
			odd -= 1
		ans = odd + even
		if ans >= x:
			if x % 2 == 0:
				if even:
					print('Yes')
				else:
					print('No')
			else:
				print('Yes')
		else:
			print('No')
	else:
		print('No')


a = int(input())
for _ in range(a):
	(c, d) = map(int, input().split())
	e = 0
	f = 0
	l = list(map(int, input().split()))
	for i in range(c):
		if l[i] % 2 == 0:
			e += 1
		else:
			f += 1
	if f == 0:
		print('NO')
	elif e == 0 and d % 2 == 0:
		print('NO')
	elif c == d and f % 2 == 0:
		print('NO')
	else:
		print('YES')


import sys
import heapq
import math
import random

def input():
	return sys.stdin.readline().strip()

def iinput():
	return int(input())

def rinput():
	return map(int, input().split())

def rlinput():
	return list(map(int, input().split()))

def srlinput():
	return sorted(list(map(int, input().split())))

def main():
	(n, x) = rinput()
	q = [int(i) % 2 for i in rlinput()]
	w = sum(q)
	o = n - w
	if w > 0:
		if o > 0:
			if w % 2 == 0:
				if x == n:
					print('No')
				else:
					print('Yes')
			else:
				print('Yes')
		elif x % 2:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
for i in range(iinput()):
	main()


t = int(input())
for i in range(0, t):
	(n, x) = [int(x) for x in input().split()]
	a = list(map(int, input().split()))
	e = 0
	o = 0
	d = 0
	for k in a:
		d = d + k
		if k % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	if n == x:
		if d % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif e == 0 and x % 2 == 0:
		print('NO')
	elif o == 0:
		print('NO')
	else:
		print('YES')


for i in range(int(input())):
	(n, x) = list(map(int, input().split()))
	li = list(map(int, input().split()))[:n]
	sum = 0
	odd = 0
	even = 0
	for j in range(len(li)):
		if li[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
	else:
		odd -= 1
		x -= 1
		while x > 0:
			if odd >= 2 and x >= 2:
				odd -= 2
				x -= 2
			elif even > 0:
				even -= 1
				x -= 1
			else:
				break
		if x == 0:
			print('YES')
		else:
			print('NO')


t = int(input())

def solve(a, b):
	total = a[1]
	even = 0
	odd = 0
	for i in b:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
		if even + odd >= total and odd > 0:
			if odd % 2 != 0:
				if odd > total and even == 0:
					continue
				print('Yes')
				return
			if odd % 2 == 0 and even + odd > total and (even > 0):
				print('Yes')
				return
	print('No')
for i in range(t):
	a = list(map(int, input().split(' ')))
	b = list(map(int, input().split(' ')))
	solve(a, b)


n = int(input())
for i in range(n):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	for i in l:
		if i % 2 == 0:
			e = e + 1
	odd = a - e
	s = 0
	for i in range(1, odd + 1, 2):
		k = b - i
		if k <= e and k >= 0:
			s = s + 1
	if s > 0:
		print('Yes')
	else:
		print('No')


import sys

def solve():
	T = int(input())
	for tests in range(0, T):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		odd = list(filter(lambda val: val % 2 == 1, a))
		even = list(filter(lambda val: val % 2 == 0, a))
		ok = False
		for g in range(1, n + 1, 2):
			if g <= x:
				if len(odd) >= g and len(even) >= x - g:
					ok = True
		if ok:
			print('Yes')
		else:
			print('No')

def main():
	solve()
main()


[t] = [int(i) for i in input().split()]
for _ in range(t):
	[n, x] = [int(i) for i in input().split()]
	nums = [int(i) for i in input().split()]
	numodd = sum([1 for i in nums if i % 2 == 1])
	numeven = n - numodd
	if numodd == 0:
		print('No')
	elif n == x and numodd % 2 == 0:
		print('No')
	elif n == numodd and x % 2 == 0:
		print('No')
	else:
		print('Yes')


import sys
input = lambda : sys.stdin.readline().strip()
t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odds = 0
	evens = 0
	for i in a:
		if i & 1:
			odds += 1
		else:
			evens += 1
	if odds == 0:
		print('No')
		continue
	if x == n:
		if odds % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	if odds >= x:
		if x % 2 == 0:
			if evens > 0:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
		continue
	else:
		print('Yes')
		continue


from sys import stdin

def inp():
	return stdin.readline().strip()
t = int(inp())
for _ in range(t):
	(n, x) = [int(x) for x in inp().split()]
	ar = [int(x) for x in inp().split()]
	odd = 0
	even = 0
	if x == n:
		if sum(ar) % 2 == 1:
			print('YES')
			continue
		else:
			print('NO')
			continue
	for i in range(n):
		if ar[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if even >= x - 1 and odd > 0:
		print('YES')
		continue
	if x % 2 == 1:
		if odd >= x:
			print('YES')
			continue
	if even > 0 and odd > 0:
		print('YES')
		continue
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	c = 0
	for i in range(n):
		if a[i] % 2 == 1:
			c += 1
	if c == 0:
		print('NO')
	elif x != n:
		if c != n:
			print('YES')
		elif x % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif c % 2 == 0:
		print('NO')
	else:
		print('YES')


for _ in range(int(input())):
	(k, l) = map(int, input().split())
	a = list(map(int, input().split()))
	even = 0
	odd = 0
	flag = False
	for i in range(0, k):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if k == l and odd % 2 == 0:
		print('NO')
	elif odd == 0:
		print('NO')
	elif l % 2 == 0 and even == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for k in range(t):
	a = list(map(int, input().split(' ')))
	b = list(map(int, input().split(' ')))
	n = a[0]
	x = a[1]
	e = 0
	o = 0
	f = 0
	for i in range(n):
		if b[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('NO')
	else:
		for j in range(1, o + 1, 2):
			if j > x:
				break
			elif x - j <= e:
				print('yes')
				f = 1
				break
		if f == 0:
			print('NO')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	e1 = 0
	o1 = 0
	for j in range(len(a)):
		if a[j] % 2 == 0:
			e1 = e1 + 1
		else:
			o1 = o1 + 1
	if o1 == 0 or (o1 % 2 == 0 and x == n) or (x % 2 == 0 and o1 == n):
		print('No')
	else:
		print('Yes')


def DenTofieM():
	for test in range(int(input())):
		(sz, x) = map(int, input().split())
		p = list(map(int, input().split()))
		odd = 0
		for i in p:
			if i & 1:
				odd += 1
		if not odd & 1 and x == sz or odd == 0 or (not x & 1 and odd == sz):
			print('No')
		else:
			print('Yes')
DenTofieM()


T = int(input())
while T:
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	e = 0
	o = 0
	for i in A:
		if i % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	if o == 0:
		print('No')
	elif e == 0 and x % 2 == 0:
		print('No')
	elif x - 1 <= e:
		print('Yes')
	else:
		y = x - e
		if y % 2 == 0:
			y = y + 1
		if y <= o:
			print('Yes')
		else:
			print('No')
	T = T - 1


from sys import stdin
input = lambda : stdin.readline().strip()
from math import ceil, sqrt, factorial, gcd
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	flag = 'No'
	a = 0
	b = 0
	for i in l:
		if i % 2 == 0:
			a += 1
		else:
			b += 1
	if b == 0:
		pass
	elif b >= x:
		if x % 2 == 0:
			if a > 0:
				flag = 'Yes'
		else:
			flag = 'Yes'
	elif x % 2 == 0:
		if b % 2 == 0 and b != 0:
			x = x - (b - 1)
			if a >= x:
				flag = 'Yes'
		elif b % 2 != 0:
			if a >= x - b:
				flag = 'Yes'
	elif b % 2 != 0:
		x = x - b
		if a >= x:
			flag = 'Yes'
	else:
		x = x - (b - 1)
		if a >= x:
			flag = 'Yes'
	print(flag)


import sys
input = sys.stdin.buffer.readline
a = int(input())
for x in range(a):
	(b, c) = map(int, input().split())
	e = []
	o = []
	k = list(map(int, input().split()))
	for y in k:
		if y % 2 == 0:
			e.append(y)
		else:
			o.append(y)
	j = len(e)
	h = len(o)
	if h == 0:
		print('NO')
	else:
		if h % 2 == 0:
			h = h - 1
		if h > c:
			if c % 2 == 0:
				if j >= 1:
					print('YES')
				else:
					print('NO')
			else:
				print('YES')
		elif h == c:
			if c % 2 == 0:
				if j >= 1:
					print('YES')
				else:
					print('NO')
			else:
				print('YES')
		elif j >= c - h:
			print('YES')
		else:
			print('NO')


n = int(input())
for _ in range(n):
	(a, b) = map(int, input().split())
	z = list(map(int, input().split()))
	k = sum(z)
	(q, w) = ([], [])
	for i in z:
		if i % 2 != 0:
			q.append(i)
		else:
			w.append(i)
	if b == a:
		if k % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif b % 2 != 0:
		if len(q) != 0:
			print('YES')
		else:
			print('NO')
	elif b % 2 == 0:
		if len(q) != 0 and len(w) != 0:
			print('YES')
		else:
			print('NO')


for _ in range(int(input())):
	(s1, s2) = map(int, input().split())
	(c1, c2) = (0, 0)
	for i in input().split():
		if int(i) % 2 == 1:
			c2 += 1
		else:
			c1 += 1
	if c1 == 0:
		if s2 % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif c2 > 0:
		if c1 + c2 > s2:
			print('Yes')
		elif c2 % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


test = int(input())
for i in range(test):
	(n, x) = [int(i) for i in input().split()]
	arr = [int(i) for i in input().split()]
	even = 0
	odd = 0
	for i in arr:
		if i % 2:
			odd += 1
		else:
			even += 1
	if odd % 2 == 0:
		odd -= 1
	if odd > 0 and (x % 2 == 1 or even > 0) and (odd + even >= x):
		ans = 'YES'
	else:
		ans = 'NO'
	print(ans)


for _ in range(int(input())):
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	p = 0
	q = 0
	for i in a:
		if i % 2:
			p += 1
		else:
			q += 1
	k = min(p, x)
	if k:
		if k % 2 == 0 and q >= x - k + 1 or (k % 2 == 1 and q >= x - k):
			print('Yes')
		else:
			print('No')
	else:
		print('No')


def func(n, x, mas):
	count_nechet = 0
	for i in mas:
		if i % 2:
			count_nechet += 1
	if count_nechet == 0 or (count_nechet == n and x % 2 == 0) or (x == n and sum(mas) % 2 == 0):
		return 'No'
	else:
		return 'Yes'
k = int(input())
for i in range(k):
	(n, x) = [int(i) for i in input().split()]
	mas = [int(i) for i in input().split()]
	print(func(n, x, mas))


import math
a = int(input())
for i in range(a):
	b = [int(x) for x in input().split()]
	c = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for j in range(b[0]):
		if c[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif even == 0:
		if b[1] % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif b[1] - 1 <= even:
		print('Yes')
	else:
		if (b[1] - even) % 2 == 1:
			b[1] = b[1] - even
		else:
			b[1] = b[1] - (even - 1)
		if b[1] <= odd:
			print('Yes')
		else:
			print('No')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = [int(j) % 2 for j in input().split()]
	a.sort(reverse=True)
	j = 0
	s = 0
	if x > len(a):
		print('No')
		continue
	if x == 1:
		if a.count(1) >= 1:
			print('Yes')
			continue
		print('No')
		continue
	s = a.count(1)
	if s == 0:
		print('No')
		continue
	if x > s and s % 2 == 0:
		if a.count(0) >= x + 1 - s:
			print('Yes')
			continue
		print('No')
		continue
	if x > s and s % 2 == 1:
		print('Yes')
		continue
	if x <= s and x % 2 == 0:
		if a.count(0) != 0:
			print('Yes')
			continue
		else:
			print('No')
			continue
	if x <= s and x % 2 == 1:
		print('Yes')
		continue


t = int(input())
for hh in range(0, t):
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	inc = 0
	oddcount = 0
	finaloddcount = 0
	evencount = 0
	for i in range(0, n):
		if a[i] % 2 == 1:
			finaloddcount += 1
		else:
			evencount += 1
	if finaloddcount == 0:
		print('No')
	elif evencount >= x - 1:
		print('Yes')
	else:
		tempx = x - evencount
		tempx2 = x - evencount + 1
		if finaloddcount >= tempx and tempx % 2 == 1:
			print('Yes')
		elif finaloddcount >= tempx2 and tempx2 % 2 == 1 and (evencount > 0):
			print('Yes')
		else:
			print('No')


import sys
input = sys.stdin.buffer.readline

def solution():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		l = list(map(int, input().split()))
		ecnt = ocnt = 0
		for i in range(n):
			if l[i] % 2 == 0:
				ecnt += 1
			else:
				ocnt += 1
		if ocnt % 2 == 0:
			ocnt -= 1
		if x % 2 == 0:
			if ecnt >= 1 and ocnt >= 1 and (ocnt + ecnt >= x):
				print('YES')
			else:
				print('NO')
		elif ocnt >= 1 and ocnt + ecnt >= x:
			print('YES')
		else:
			print('NO')
solution()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odds = sum((ele & 1 for ele in arr))
	eves = n - odds
	if odds == 0:
		print('No')
	else:
		used = min(odds + odds % 2 - 1, x + x % 2 - 1)
		if x - used > eves:
			print('No')
		else:
			print('Yes')


def solve():
	for _ in range(int(input())):
		(n, x) = map(int, input().strip().split())
		l = list(map(int, input().strip().split()))
		c = 0
		for i in l:
			if i % 2 != 0:
				c += 1
		e = n - c
		if c == 0:
			print('No')
		elif c == 1:
			print('Yes')
		elif x == n:
			if c % 2 != 0:
				print('Yes')
			else:
				print('No')
		elif c <= x:
			print('Yes')
		elif c > x:
			if e == 0 and x % 2 == 0:
				print('No')
			else:
				print('Yes')
solve()


for k in range(int(input())):
	(n, x) = map(int, input().split())
	t = list(map(int, input().split()))
	ev = 0
	od = 0
	for i in t:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
	else:
		h = 0
		for k in range(1, od + 1, 2):
			if x - k >= 0:
				if ev >= x - k:
					print('Yes')
					h += 1
					break
			else:
				break
		if h == 0:
			print('No')


def solve(n, x, arr):
	even_count = 0
	odd_count = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	if odd_count == 0:
		return 'No'
	elif even_count == 0 and x % 2 == 0:
		return 'No'
	elif odd_count % 2 == 1:
		return 'Yes'
	elif x == n:
		return 'No'
	else:
		return 'Yes'
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	print(solve(n, x, arr))


for I in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for num in a:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	if even == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif even < x:
		x -= even
		if odd >= x:
			if x % 2 == 1:
				print('Yes')
			elif odd >= x + 1:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
	elif odd > 0:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	eve = 0
	odd = 0
	arr = list(map(int, input().split()))
	for i in arr:
		if i % 2 == 1:
			odd += 1
	if x == n:
		if odd % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif odd == n:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif odd >= 1:
		print('Yes')
	else:
		print('No')


N = int(input())
for i in range(N):
	(a, b) = map(int, input().split())
	L = list(map(int, input().split()))
	Odd = 0
	Eve = 0
	for i in L:
		if i % 2 == 0:
			Eve += 1
		else:
			Odd += 1
	if a == b:
		if sum(L) % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif Odd == 0:
		print('No')
	elif Eve == 0 and b % 2 == 0:
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.buffer.readline
t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for y in arr:
		if y % 2 == 0:
			even += 1
		else:
			odd += 1
	if x > n or odd == 0:
		print('No')
	elif x <= even:
		print('Yes')
	elif x <= odd:
		if x % 2 == 1 or even > 0:
			print('Yes')
		else:
			print('No')
	else:
		x = x - even
		if x % 2 == 0:
			if x + 1 <= odd:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')


for case in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in lis:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	checker = False
	for n in range(1, min(odd, x) + 1, 2):
		if even >= x - n:
			checker = True
			break
	if checker == True:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline
for f in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = 0
	e = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if x == n:
		if o % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif o > 0:
		if x % 2 == 0:
			if e > 0:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	s = 0
	for i in a:
		if i % 2 != 0:
			s = s + 1
	if n == x and s % 2 == 0 or s == 0 or (s == n and x % 2 == 0):
		print('no')
	else:
		print('yes')


def solve(n, x, ar):
	odd = 0
	even = 0
	for i in range(n):
		if ar[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == n:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
		return
	if even == n:
		print('NO')
		return
	if (x - even) % 2 == 0:
		if odd >= x - even + 1:
			print('YES')
		else:
			print('NO')
	elif odd >= x - even:
		print('YES')
	else:
		print('NO')
	return
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	ar = list(map(int, input().split()))
	solve(n, x, ar)


for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	ans = 'NO'
	for i in range(1, min(odd, x) + 1, 2):
		if x - i <= even:
			ans = 'YES'
			break
	print(ans)


for nt in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = 0
	e = 0
	for i in a:
		if i % 2:
			o += 1
		else:
			e += 1
	if e == 0 and x % 2 == 0:
		print('NO')
		continue
	if o == 0:
		print('NO')
		continue
	if o % 2:
		print('YES')
	elif x <= n - 1:
		print('YES')
	else:
		print('NO')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if x == n:
		if sum(a) % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		odd = 0
		for c in a:
			if c % 2 == 1:
				odd += 1
		if odd == 0:
			print('No')
		else:
			even = n - odd
			if odd % 2 == 0:
				odd -= 1
			if odd + even >= x:
				if x % 2 == 0:
					if even == 0:
						print('No')
					else:
						print('Yes')
				else:
					print('Yes')
			else:
				print('No')


num = int(input())
for i in range(num):
	temp = input().split(' ')
	l = int(temp[0])
	n = int(temp[1])
	arr = input().split(' ')
	odd = 0
	even = 0
	for j in arr:
		t = int(j)
		if t % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if n == l:
		if odd % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif odd == 0:
		print('No')
	elif n % 2 == 0:
		if even == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	nodd = sum((1 for i in range(n) if arr[i] % 2 == 1))
	neven = n - nodd
	result = True
	if nodd == 0 or (x == n and nodd % 2 == 0):
		result = False
	elif x % 2 == 0:
		result = neven > 0
	print('Yes' if result else 'No')


import sys
max_int = 1000000001
min_int = -max_int
t = int(input())
for _t in range(t):
	(n, x) = map(int, sys.stdin.readline().split())
	a = map(int, sys.stdin.readline().split())
	odds = even = 0
	for one in a:
		if one % 2:
			odds += 1
		else:
			even += 1
	if not odds:
		print('No')
		continue
	x -= 1
	odds -= 1
	if not x:
		print('Yes')
		continue
	if x % 2 == 0:
		print('Yes' if even + 2 * (odds // 2) >= x else 'No')
		continue
	if not even:
		print('No')
		continue
	even -= 1
	x -= 1
	if not x:
		print('Yes')
		continue
	print('Yes' if even + 2 * (odds // 2) >= x else 'No')


t = int(input())
for _ in range(t):
	(n, x) = [int(e) for e in input().split()]
	a = [int(e) for e in input().split()]
	n_odd = sum([1 for e in a if e % 2 == 1])
	n_even = len(a) - n_odd
	aim = n_odd if n_odd % 2 == 1 or n_odd == 0 else n_odd - 1
	aim += n_even
	if x % 2 == 1:
		print('Yes' if aim >= x and n_odd > 0 else 'No')
	else:
		print('Yes' if aim >= x and n_odd > 0 and (n_even > 0) else 'No')


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split(' ')))
	A = list(map(int, input().split(' ')))
	numOdd = len(list(filter(lambda x: x % 2 != 0, A)))
	numEven = n - numOdd
	if n == x:
		print('Yes' if numOdd % 2 == 1 else 'No')
	elif numOdd == 0:
		print('No')
	elif numOdd == n:
		print('Yes' if x % 2 == 1 else 'No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	oarr = 0
	for i in arr:
		if i % 2 != 0:
			oarr += 1
	if n == x:
		if oarr % 2 == 0 or oarr == 0:
			print('No')
		else:
			print('Yes')
	elif oarr:
		if arr.count(arr[0]) == n or n == oarr:
			if x % 2 != 0:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split(' '))
	a = list(map(int, input().split(' ')))
	odd = len(list(filter(lambda x: x % 2 == 1, a)))
	res = False
	if odd > 0:
		t = min(odd, x)
		if t % 2 == 0:
			t -= 1
		if x - t <= n - odd:
			res = True
	print('Yes' if res else 'No')


b = int(input())
for j in range(b):
	(n, m) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	c = 0
	for i in range(0, len(a)):
		if a[i] % 2 != 0:
			c = c + 1
	d = len(a) - c
	if c >= m:
		c = m
		if c % 2 == 0:
			c = c - 1
			if c >= 0 and d + c >= m:
				print('YES')
			else:
				print('NO')
		else:
			print('YES')
	elif c % 2 == 0:
		c = c - 1
		if c >= 0 and d + c >= m:
			print('YES')
		else:
			print('NO')
	elif c >= 0 and d + c >= m:
		print('YES')
	else:
		print('NO')


from collections import Counter
import math
import sys
from bisect import bisect, bisect_left, bisect_right

def input():
	return sys.stdin.readline().strip()

def INT():
	return int(input())

def MAP():
	return map(int, input().split())

def LIST(N=None):
	return list(MAP()) if N is None else [INT() for i in range(N)]

def mod():
	return 10 ** 9 + 7
for _ in range(INT()):
	1
	(n, x) = MAP()
	arr = LIST()
	e = 0
	o = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			e += 1
		else:
			o += 1
	j = 0
	for i in range(1, o + 1, 2):
		if i <= x:
			s = i + e
			if s >= x:
				j = 1
				break
		else:
			break
	if j != 0:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(a, b) = map(int, input().split())
	c = list(map(int, input().split()))
	ev = 0
	od = 0
	for i in c:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	ans = False
	for i in range(1, od + 1, 2):
		if ev >= b - i and b - i >= 0:
			ans = True
			break
	if ans:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(m, n) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	o = 0
	e = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
		continue
	if o % 2 == 0:
		o -= 1
	if n > o:
		if n - o <= e:
			print('Yes')
		else:
			print('No')
	elif n % 2 == 0:
		if e > 0:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


import sys, os
from io import BytesIO, IOBase
import collections, itertools, bisect, heapq, math, string
from decimal import *
BUFSIZE = 8192
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')

def main():
	t = int(input())
	for i in range(t):
		nx = list(map(int, input().split()))
		(n, x) = (nx[0], nx[1])
		a = list(map(int, input().split()))
		(odd, even) = (0, 0)
		for i in a:
			if i % 2 == 0:
				even += 1
			else:
				odd += 1
		ans = 'No'
		j = 1
		if odd == 0:
			print('No')
			continue
		while j <= x:
			if j <= odd and x - j >= 0 and (x - j <= even):
				ans = 'Yes'
				break
			j += 2
		print(ans)
main()


t = int(input())
for i in range(t):
	f = lambda : map(int, input().split(' '))
	(n, l) = f()
	a = list(f())
	(o, e) = (0, 0)
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if l == n:
		if l % 2 == 0:
			if o % 2 == 1 and e % 2 == 1:
				print('YES')
			else:
				print('NO')
		elif o % 2 == 1 and e % 2 == 0:
			print('YES')
		else:
			print('NO')
	elif l % 2 == 0:
		if o >= 1 and e >= 1:
			print('YES')
		else:
			print('NO')
	elif o >= l or (o >= 1 and e >= 2):
		print('YES')
	else:
		print('NO')


def f():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odds = 0
	for i in a:
		if i % 2 == 1:
			odds += 1
	if odds == n:
		if x % 2 == 1:
			return 'Yes'
		else:
			return 'No'
	elif odds == 0:
		return 'No'
	elif x == n and odds % 2 == 0:
		return 'No'
	else:
		return 'Yes'
t = int(input())
for _ in range(t):
	print(f())


import sys
from collections import defaultdict
input = sys.stdin.readline

def print_result(l):
	return print(' '.join(map(str, l)))

def timer(function):
	import time

	def wrapper(*args, **kwargs):
		t1 = time.time()
		val = function()
		t2 = time.time()
		print('Executed \\{}\\ in {:.2f} seconds.'.format(function.__name__, t2 - t1))
		return val
	return wrapper

def solve():
	res = False
	(n, x) = map(int, input().split(' '))
	arr = [int(y) for y in input().split(' ')]
	(n_odd, n_even) = (0, 0)
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			n_even += 1
		else:
			n_odd += 1
	if n_odd >= 1:
		n_odd -= 1
		if x % 2 == 0:
			n_pairs = n_odd // 2
			n_required = (x - 2) // 2
			n_remaining = x - 1 - 2 * min(n_pairs, n_required)
			if n_even >= n_remaining:
				res = True
		else:
			n_pairs = n_odd // 2
			if 2 * n_pairs + n_even >= x - 1:
				res = True
	print('Yes' if res else 'No')
t = int(input())
for _ in range(t):
	solve()


for q in range(int(input())):
	(a, b) = map(int, input().split())
	arr = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for i in range(a):
		if arr[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd % 2 == 0 and odd != 0:
		odd -= 1
	if b % 2 == 0 and even == 0 or odd == 0:
		print('No')
	elif b % 2 == 1 and odd == 0:
		print('No')
	elif odd + even >= b:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ecount = 0
	ocount = 0
	for i in range(n):
		if a[i] % 2 == 0:
			ecount += 1
		else:
			ocount += 1
	if ocount >= 1:
		flag = 0
		for j in range(1, x + 1, 2):
			if ocount >= j:
				if x - j <= ecount:
					print('Yes')
					flag = 1
					break
			else:
				break
		if flag == 0:
			print('No')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	for i in range(n):
		if arr[i] % 2 == 0:
			arr[i] = 0
		else:
			arr[i] = 1
	if arr.count(1) == 0:
		print('No')
		continue
	if x % 2 == 0 and arr.count(0) == 0:
		print('No')
		continue
	if arr.count(0) + (arr.count(1) - 1) // 2 * 2 >= x - 1:
		print('Yes')
	else:
		print('No')


import sys
import math
sys.setrecursionlimit(1000000)
int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep='\n')
p2S = lambda x: print(*x, sep=' ')

def II():
	return int(sys.stdin.readline())

def MI():
	return map(int, sys.stdin.readline().split())

def LI():
	return list(map(int, sys.stdin.readline().split()))

def LLI(rows_number):
	return [LI() for _ in range(rows_number)]

def SI():
	return sys.stdin.readline()[:-1]

def main():
	_v_ = II()
	for _ in range(_v_):
		(a, b) = MI()
		j = 0
		o = 0
		s = MI()
		c = False
		for i in s:
			if i & 1 == 0:
				o += 1
			else:
				j += 1
		for i in range(1, min(j + 1, b + 1), 1):
			if i & 1 == 1 and b - i <= o:
				c = True
				break
		if c == True:
			print('Yes')
		else:
			print('No')
main()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	data = list(map(int, input().split()))
	even_count = 0
	odd_count = 0
	for i in data:
		if i % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	found = False
	if x % 2 == 1:
		for i in range(0, x + 1, 2):
			if even_count >= i and odd_count >= x - i:
				found = True
	else:
		for i in range(1, x + 1, 2):
			if even_count >= i and odd_count >= x - i:
				found = True
	if found:
		print('Yes')
	else:
		print('No')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(le, lo) = ([], [])
	for i in range(len(l)):
		if l[i] % 2 == 0:
			le.append(l[i])
		else:
			lo.append(l[i])
	if n == x:
		if len(lo) % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif n == len(lo):
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif n < x:
		print('NO')
	elif len(lo) >= 1:
		print('YES')
	else:
		print('NO')
	t = t - 1


n = int(input())
ans = []
for i in range(n):
	(size, want) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = list(filter(lambda x: x % 2 != 0, l))
	even = list(filter(lambda x: x % 2 == 0, l))
	if want == size and sum(l) % 2 != 0:
		ans.append('Yes')
	elif len(odd) == 0:
		ans.append('No')
	elif len(odd) % 2 != 0 and len(odd) >= want and (len(even) > 0):
		ans.append('Yes')
	elif len(odd) % 2 != 0 and len(odd) >= want and (want % 2 != 0):
		ans.append('Yes')
	elif len(odd) % 2 == 0 and len(odd) >= want and (len(even) > 0):
		ans.append('Yes')
	elif len(odd) % 2 == 0 and len(odd) >= want and (want % 2 != 0):
		ans.append('Yes')
	elif len(odd) % 2 != 0 and len(odd) < want and (len(even) >= want - len(odd)):
		ans.append('Yes')
	elif len(odd) % 2 == 0 and len(odd) < want and (len(even) >= want - len(odd) + 1):
		ans.append('yes')
	else:
		ans.append('No')
print('\n'.join(ans))


import sys
input = sys.stdin.readline

def main():
	for t in range(int(input())):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		o = 0
		for e in a:
			if e % 2 == 1:
				o += 1
		e = len(a) - o
		if o == 0:
			print('No')
			continue
		x -= 1
		o -= 1
		while x > 1 and o > 1:
			x -= 2
			o -= 2
		if e >= x:
			print('Yes')
		else:
			print('No')
main()


t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	no = 0
	for i in a:
		if i % 2 != 0:
			no = no + 1
	if no % 2 == 0 and x == n or no == 0:
		print('No')
	elif no == n and x % 2 == 0:
		print('No')
	else:
		print('Yes')


a = int(input())
for i in range(0, a):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = []
	odd = []
	for i in arr:
		if i % 2 == 0:
			even.append(i)
		else:
			odd.append(i)
	if len(odd) > 0 and len(even) > 0:
		if len(odd) % 2 == 1:
			print('YES')
		elif x == n:
			print('NO')
		else:
			print('YES')
	elif len(odd) == 0:
		print('NO')
	elif len(even) == 0:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')


import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2:
			odd += 1
		else:
			even += 1
	if not odd:
		print('No')
	elif x < n and odd and even:
		print('Yes')
	elif (x - even) % 2:
		print('Yes')
	else:
		print('No')


from collections import Counter
for _ in range(int(input())):
	cc = 0
	(nuimssx, x) = map(int, input().split())
	Listccx = [d % 2 for d in map(int, input().split())]
	cc += 1
	anncountxx = Counter(Listccx)
	even = anncountxx.get(0, 0)
	odds = anncountxx.get(1, 0)
	vv = even == 0 and x % 2 == 0
	pp = odds == 0
	qq = (odds - 1) // 2 * 2 + even < x - 1
	cc += 1
	if vv:
		cc += 1
		print('No')
	elif pp:
		cc += 1
		print('No')
	elif qq:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	od = ev = 0
	for i in arr:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
	else:
		od -= 1
		k -= 1
		if od % 2 == 1:
			od -= 1
		k -= min(k if k % 2 == 0 else k - 1, od)
		if k <= ev:
			print('Yes')
		else:
			print('No')


def rs():
	return input().strip()

def ri():
	return int(input())

def ria():
	return list(map(int, input().split()))

def ia_to_s(a):
	return ' '.join([str(s) for s in a])

def solve(n, x, a):
	odds_count = sum((1 for i in a if i % 2 == 1))
	even_count = n - odds_count
	for i in range(1, x + 1, 2):
		if odds_count >= i and even_count >= x - i:
			return True
	return False

def main():
	for _ in range(ri()):
		(n, x) = ria()
		a = ria()
		print('Yes' if solve(n, x, a) else 'No')
main()


def list_to_dict(a):
	d = {0: 0, 1: 0}
	for ele in a:
		if ele % 2 == 0:
			d[0] += 1
		else:
			d[1] += 1
	return d

def odd_selection(d, x):
	if d[1] == 0:
		return 'No'
	if d[1] % 2 == 0:
		max_odd_odd = d[1] - 1
	else:
		max_odd_odd = d[1]
	if x <= max_odd_odd:
		if x % 2 == 0 and d[0] == 0:
			return 'No'
		else:
			return 'Yes'
	elif d[0] >= x - max_odd_odd:
		return 'Yes'
	else:
		return 'No'
test_case = int(input())
while test_case > 0:
	line = input()
	line = line.split()
	n = int(line[0])
	x = int(line[1])
	a = input()
	a = a.split()
	a = [int(ele) for ele in a]
	print(odd_selection(list_to_dict(a), x))
	test_case -= 1


for _ in range(int(input())):
	(n, m) = map(int, input().split())
	o = sum((x % 2 for x in map(int, input().split())))
	e = n - o
	if o:
		x = (o - 1) // 2 * 2 + 1
		if x > m:
			x -= (x - m + 1) // 2 * 2
		x += e
		print('No' if x < m else 'Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = even = 0
	for item in a:
		if item % 2:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('NO')
	else:
		odd -= 1
		x -= 1
		while odd > 1 and x > 1:
			x -= 2
			odd -= 2
		if x <= even:
			print('YES')
		else:
			print('NO')


from collections import defaultdict, deque
from heapq import heappush, heappop
from itertools import permutations, accumulate
import sys
import math
import bisect

def LI():
	return [int(x) for x in sys.stdin.readline().split()]

def I():
	return int(sys.stdin.readline())

def LS():
	return [list(x) for x in sys.stdin.readline().split()]

def S():
	res = list(sys.stdin.readline())
	if res[-1] == '\n':
		return res[:-1]
	return res

def IR(n):
	return [I() for i in range(n)]

def LIR(n):
	return [LI() for i in range(n)]

def SR(n):
	return [S() for i in range(n)]

def LSR(n):
	return [LS() for i in range(n)]
sys.setrecursionlimit(1000000)
mod = 1000000007

def solve():
	t = I()
	for _ in range(t):
		(n, x) = LI()
		a = LI()
		o = sum([i & 1 for i in a])
		e = n - o
		if o == 0:
			print('No')
			continue
		o -= 1
		x -= 1
		a = o >> 1
		b = e
		for i in range(a + 1):
			for j in range(b + 1):
				if 2 * i + j == x:
					print('Yes')
					break
			else:
				continue
			break
		else:
			print('No')
	return
solve()


def run():
	import sys
	sys.stdin = open('/home/puneet/Documents/Cpp Programs/input.txt', 'r')
	sys.stdout = open('/home/puneet/Documents/Cpp Programs/output.txt', 'w')
	from math import ceil, sqrt, floor
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	li = [int(x) for x in input().split()]
	x = [q for q in li if q % 2 == 1]
	y = [t for t in li if t % 2 == 0]
	if len(x) == 0:
		print('NO')
	else:
		s = 0
		t = min(len(x), k)
		for i in range(min(len(x), k)):
			s += x[i]
		if t % 2 == 0:
			s -= x[t - 1]
			if t - 1 == k:
				print('YES')
			elif t - 1 + len(y) >= k:
				print('YES')
			else:
				print('NO')
		elif t == k:
			print('YES')
		elif t + len(y) >= k:
			print('YES')
		else:
			print('NO')


for i in range(int(input())):
	(a, b) = map(int, input().split())
	x = list(map(int, input().split()))
	o = 0
	for i in x:
		if i % 2 != 0:
			o += 1
	if o == 0 or (b == a and o % 2 == 0) or (b % 2 == 0 and o == a):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	b = list(map(int, input().split()))
	(n, x) = (b[0], b[1])
	a = list(map(int, input().split()))
	odd_count = 0
	even_count = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	if odd_count % 2 == 0:
		odd_count -= 1
	if odd_count > 0 and odd_count + even_count >= x:
		if x % 2 == 0 and even_count == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('NO')


t = int(input())
while t:
	t = t - 1
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	a = [int(item) for item in input().split()]

	def isodd(a):
		count = 0
		for i in range(n):
			if a[i] % 2 == 0:
				continue
			else:
				count += 1
		return count
	o = isodd(a)
	e = n - o
	if x == n:
		if o % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x % 2 == 0:
		if o >= x and e >= 1:
			print('Yes')
		elif o >= x and e == 0:
			print('No')
		elif o < x:
			if o % 2 != 0:
				print('Yes')
			elif e >= x - (o - 1) and o - 1 > 0:
				print('Yes')
			else:
				print('No')
	elif o % 2 != 0:
		print('Yes')
	elif o > x:
		print('Yes')
	elif o <= x:
		if e >= x - (o - 1) and o - 1 > 0:
			print('Yes')
		else:
			print('No')


import sys

def get_ints():
	return map(int, sys.stdin.readline().strip().split())
t = int(input())
for test in range(t):
	(n, x) = get_ints()
	a = [int(x) % 2 for x in input().split()]
	odd = sum(a)
	even = n - odd
	if even == 0 and x % 2 == 0:
		print('No')
	elif odd % 2 == 0 and x == n:
		print('No')
	elif odd == 0:
		print('No')
	else:
		print('Yes')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = []
	eve = []
	for i in lis:
		if i % 2 == 0:
			eve.append(i)
		else:
			odd.append(i)
	if len(odd) == 0:
		print('No')
	elif len(eve) == 0 and x % 2 == 0:
		print('No')
	elif x == n and len(odd) % 2 == 0:
		print('No')
	else:
		print('Yes')


def inp():
	return map(int, input().split())

def solve():
	(n, x) = inp()
	a = list(inp())
	(ch, nch) = (0, 0)
	for i in range(n):
		if a[i] % 2 == 0:
			ch += 1
		else:
			nch += 1
	if nch == 0:
		return 'No'
	if ch == 0 and x % 2 == 0:
		return 'No'
	if x == n and sum(a) % 2 == 0:
		return 'No'
	return 'Yes'

def main():
	t = int(input())
	while t:
		print(solve())
		t -= 1
main()


from sys import stdin, stdout
test = int(stdin.readline())
for _ in range(test):
	(n, x) = map(int, stdin.readline().split())
	A = [int(x) for x in stdin.readline().split()]
	ans = False
	odd = 0
	for i in A:
		if i & 1:
			odd += 1
	if x == n:
		if odd & 1:
			print('Yes')
		else:
			print('No')
		continue
	if odd == 0:
		print('No')
		continue
	if n - odd == 0:
		if x & 1:
			print('Yes')
		else:
			print('No')
		continue
	print('Yes')


import sys
input = sys.stdin.readline
import heapq
import copy
import math
import decimal

class Node:

	def _init_(self, val):
		self.data = val
		self.left = None
		self.right = None

class fen_tree:

	def __init__(self, list):
		self.array = [0] + list
		for idx in range(1, len(self.array)):
			idx2 = idx + (idx & -idx)
			if idx2 < len(self.array):
				self.array[idx2] += self.array[idx]

	def prefix_query(self, idx):
		result = 0
		while idx:
			result += self.array[idx]
			idx -= idx & -idx
		return result

	def prints(self):
		print(self.array)
		return

	def range_query(self, from_idx, to_idx):
		return self.prefix_query(to_idx) - self.prefix_query(from_idx - 1)

	def update(self, idx, add):
		while idx < len(self.array):
			self.array[idx] += add
			idx += idx & -idx

def pre_sum(arr):
	p = [0]
	for i in arr:
		p.append(p[-1] + i)
	p.pop(0)
	return p

def pre_back(arr):
	p = [0]
	for i in arr:
		p.append(p[-1] + i)
	p.pop(0)
	return p

def bin_search(arr, l, r, val):
	if arr[r] <= val:
		return r + 1
	if r - l < 2:
		if arr[l] > val:
			return l
		else:
			return r
	mid = int((l + r) / 2)
	if arr[mid] <= val:
		return bin_search(arr, mid, r, val)
	else:
		return bin_search(arr, l, mid, val)

def search_leftmost(arr, val):

	def helper(arr, l, r, val):
		print(l, r)
		if arr[l] == val:
			return l
		if r - l <= 1:
			if arr[r] == val:
				return r
			else:
				print('not found')
				return
		mid = int((r + l) / 2)
		if arr[mid] >= val:
			return helper(arr, l, mid, val)
		else:
			return helper(arr, mid, r, val)
	return helper(arr, 0, len(arr) - 1, val)

def search_rightmost(arr, val):

	def helper(arr, l, r, val):
		print(l, r)
		if arr[r] == val:
			return r
		if r - l <= 1:
			if arr[l] == val:
				return r
			else:
				print('not found')
				return
		mid = int((r + l) / 2)
		if arr[mid] > val:
			return helper(arr, l, mid, val)
		else:
			return helper(arr, mid, r, val)
	return helper(arr, 0, len(arr) - 1, val)

def preorder_postorder(root, paths, parent, left, level):
	l = 0
	queue = [root]
	while queue != []:
		node = queue[-1]
		flag = 0
		for i in paths[node]:
			if i != parent[node] and level[i] == sys.maxsize:
				parent[i] = node
				level[i] = level[node] + 1
				flag = 1
				queue.append(i)
		if flag == 0:
			left[parent[node]] += 1 + left[node]
			queue.pop()
	return [parent, left, level]

def nCr(n, r, p):
	if r == 0:
		return 1
	num = den = 1
	for i in range(r):
		num = num * (n - i) % p
		den = den * (i + 1) % p
	return num * pow(den, p - 2, p) % p

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())

def pr_list(a):
	print(*a, sep=' ')

def main():
	tests = inp()
	mod = 1000000007
	limit = 10 ** 18
	for test in range(tests):
		[n, x] = inlt()
		a = inlt()
		n_e = 0
		n_o = 0
		for i in a:
			if i % 2 == 0:
				n_e += 1
			else:
				n_o += 1
		if n_o == 0:
			print('no')
			continue
		if x % 2 == 0:
			n_o = n_o - 1
			x = x - 2
			n_e = n_e - 1
		else:
			n_o = n_o - 1
			x = x - 1
		if n_e < 0:
			print('no')
			continue
		flag = 0
		while True:
			if x <= 0:
				flag = 1
				break
			if n_e >= x:
				flag = 1
				break
			if n_o <= 1:
				break
			n_o = n_o - 2
			x = x - 2
		if flag == 0:
			print('no')
		else:
			print('yes')
main()


import sys
import math
from sys import stdin, stdout

def get_ints():
	return map(int, sys.stdin.readline().strip().split())

def get_list():
	return list(map(int, sys.stdin.readline().strip().split()))

def get_string():
	return sys.stdin.readline().strip()

def main():
	for t in range(int(input())):
		(n, x) = get_ints()
		a = get_list()
		o = 0
		e = 0
		for i in a:
			if i % 2 == 1:
				o += 1
			else:
				e += 1
		if o >= x and x % 2 == 1:
			print('YES')
		else:
			ff = 0
			for i in range(o, 0, -1):
				if i % 2 == 0:
					continue
				else:
					d = x - i
					if d < 0:
						continue
					if d <= e:
						ff = 1
						break
			if ff == 1:
				print('YES')
			else:
				print('NO')
py2 = round(0.5)
if py2:
	from future_builtins import ascii, filter, hex, map, oct, zip
	range = xrange
import os, sys
from io import IOBase, BytesIO
BUFSIZE = 8192

class FastIO(BytesIO):
	newlines = 0

	def __init__(self, file):
		self._file = file
		self._fd = file.fileno()
		self.writable = 'x' in file.mode or 'w' in file.mode
		self.write = super(FastIO, self).write if self.writable else None

	def _fill(self):
		s = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
		self.seek((self.tell(), self.seek(0, 2), super(FastIO, self).write(s))[0])
		return s

	def read(self):
		while self._fill():
			pass
		return super(FastIO, self).read()

	def readline(self):
		while self.newlines == 0:
			s = self._fill()
			self.newlines = s.count(b'\n') + (not s)
		self.newlines -= 1
		return super(FastIO, self).readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.getvalue())
			(self.truncate(0), self.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		if py2:
			self.write = self.buffer.write
			self.read = self.buffer.read
			self.readline = self.buffer.readline
		else:
			self.write = lambda s: self.buffer.write(s.encode('ascii'))
			self.read = lambda : self.buffer.read().decode('ascii')
			self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(even, odd) = (0, 0)
	flag = False
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	for i in range(1, min(odd, x) + 1, 2):
		need = x - i
		if need <= even:
			flag = True
	if flag:
		print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		cur = 1
		odd -= 1
		flag = False
		while even > 0 or odd > 0:
			if cur == x:
				flag = True
				break
			elif odd > 1 and cur + 2 <= x:
				cur += 2
				odd -= 2
			elif even > 0:
				cur += 1
				even -= 1
			else:
				break
		if flag or cur == x:
			print('Yes')
		else:
			print('No')


t = int(input())
while t > 0:
	(n, x) = map(int, input().split())
	even = 0
	odd = 0
	l = []
	l.extend(map(int, input().split()))
	for i in l:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	even = int(even)
	odd = int(odd)
	if odd >= 1:
		x = x - 1
		odd = odd - 1
		if x % 2 == 0:
			x = x - int(odd / 2) * 2
		else:
			x = x - int(odd / 2) * 2
			if x <= 0:
				x = 1
		if x > 0:
			if x <= even:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	else:
		print('No')
	l.clear()
	t = t - 1


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	e = sum((1 for u in a if u % 2 == 0))
	c = n - e
	if x % 2 == 0:
		if c > x - 1:
			c = x - 1
	if c % 2 == 0:
		c -= 1
	if c + e >= x and c > 0:
		print('Yes')
	else:
		print('No')


r = int(input())
for i in range(r):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	boo = True
	ev = 0
	odd = 0
	for j in l:
		if j % 2 == 0:
			ev += 1
	odd = a - ev
	if odd == 0 or (ev == 0 and b % 2 == 0):
		print('No')
	else:
		if odd % 2 == 0:
			odd = odd - 1
		if odd + ev >= b:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if x == n:
		print('No' if sum(a) % 2 == 0 else 'Yes')
	else:
		oddcnt = len([a[i] for i in range(n) if a[i] & 1])
		print('No' if oddcnt == 0 or (oddcnt == n and x % 2 == 0) else 'Yes')


import math
t = int(input())
for i in range(t):
	inp = input().split(' ')
	(n, x) = (int(inp[0]), int(inp[1]))
	inp = input().split(' ')
	inp = [int(x) for x in inp]
	neven = 0
	nodd = 0
	for xx in inp:
		if xx % 2 == 0:
			neven += 1
		else:
			nodd += 1
	if x == n:
		if nodd % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	if neven > 0:
		if x > neven:
			if nodd > 0:
				print('Yes')
			else:
				print('No')
		elif nodd > 0:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		print('No')
	else:
		print('Yes')


for i in range(int(input())):
	(lenarr, choose_number) = map(int, input().split())
	arr = list(map(int, input().split()))
	odds = 0
	for i in arr:
		if i % 2 == 1:
			odds += 1
	if odds == 0 or (lenarr == choose_number and odds % 2 == 0) or (lenarr == odds and choose_number % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	o = 0
	e = 0
	for elem in A:
		if elem % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif x == 1:
		if o >= 1:
			print('Yes')
		else:
			print('No')
	elif x == n:
		if o % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if o == 0 or o == n:
			print('No')
		else:
			print('Yes')
	elif x % 2 == 1:
		if o > 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


for i in range(int(input())):
	(n, x) = list(map(int, input().split()))
	lis = list(map(int, input().split()))
	count = 0
	for i in lis:
		if i % 2 == 1:
			count += 1
	ev = n - count
	if x == n:
		if count % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif count == 0:
		print('No')
	elif count >= x:
		if ev > 0:
			print('Yes')
		elif x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif count < x:
		if count % 2 == 0:
			if x - count + 1 <= ev:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')


import sys
import math
import collections
import heapq
import queue
import itertools
import functools
import operator
import time
readline = sys.stdin.readline
IPS = lambda : readline().rstrip()
IP = lambda : int(readline().rstrip())
MP = lambda : map(int, readline().split())
LS = lambda : list(map(int, readline().split()))

def solve():
	for _ in range(IP()):
		(n, x) = MP()
		arr = LS()
		(odd, even) = (0, 0)
		for elem in arr:
			if elem & 1:
				odd += 1
		even = n - odd
		if even != 0 and odd != 0:
			if x == n:
				if odd & 1:
					print('Yes')
				else:
					print('No')
			else:
				print('Yes')
		elif x & 1 == 1 and odd != 0:
			print('Yes')
		else:
			print('No')
solve()


T = int(input())
for i in range(T):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	(co, ce) = (0, 0)
	for e in l:
		if e % 2 == 0:
			ce = ce + 1
		else:
			co = co + 1
	if co == 0:
		print('No')
	elif co == a:
		if b % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif co % 2 == 0:
		if a == b:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


test = int(input())
for i in range(0, test):
	l = input().split()
	n = int(l[0])
	x = int(l[1])
	l1 = list(map(int, input().split()))
	odd = 0
	even = 0
	for k in range(0, n):
		if l1[k] % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if odd == 0:
		print('No')
	elif x % 2 == 1:
		if odd % 2 == 0:
			odd = odd - 1
		temp = x - even
		if odd >= temp:
			print('Yes')
		else:
			print('No')
	else:
		if odd % 2 == 0:
			odd = odd - 1
		if even == 0:
			print('No')
		else:
			temp = x - even
			if odd >= temp:
				print('Yes')
			else:
				print('No')


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	no = 0
	ne = 0
	for element in arr:
		if element % 2 == 0:
			ne += 1
		else:
			no += 1
	flag = 0
	for i in range(1, min(x, no) + 1, 2):
		if x - i <= ne:
			flag = True
		else:
			flag = False
	if flag:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = []
	c = 0
	l = list(map(int, input().split()))
	for k in l:
		if k % 2 != 0:
			c += 1
	od = c
	ev = len(l) - od
	if x == len(l):
		if sum(l) % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif ev == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif od == 0:
		print('No')
	elif ev + od > x:
		print('Yes')


test = int(input())
for i in range(test):
	(n, r) = [int(x) for x in input().split(' ')]
	a = [int(x) for x in input().split(' ')]
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if r == n:
		if odd % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif odd == n and r % 2 == 0:
		print('NO')
	else:
		flag = 0
		for i in range(1, odd + 1):
			if i % 2 != 0:
				if r - i <= even:
					flag = 1
					break
		if flag == 1:
			print('YES')
		else:
			print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	q = [0, 0]
	for i in map(int, input().split()):
		q[i % 2] += 1
	if q[1] == 0:
		print('No')
		continue
	x -= 1
	q[1] -= 1
	x -= min(q[1] // 2 * 2, x // 2 * 2)
	if x:
		x -= q[0]
	if x > 0:
		print('No')
	else:
		print('Yes')


import sys

def get_ints():
	return map(int, sys.stdin.readline().strip().split())

def get_array():
	return list(map(int, sys.stdin.readline().strip().split()))

def input():
	return sys.stdin.readline().strip()
mod = 10 ** 9 + 7
t = int(input())
while t:
	(n, x) = get_ints()
	arr = get_array()
	flag = True
	evenc = oddc = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			evenc += 1
		else:
			oddc += 1
	ans = 'No'
	if oddc == 0:
		print('No')
	else:
		for i in range(1, oddc + 1, 2):
			if i > x:
				break
			if x - i <= evenc:
				ans = 'Yes'
				break
		print(ans)
	t -= 1


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	no_of_odds = 0
	for elem in a:
		if elem % 2 == 1:
			no_of_odds += 1
	no_of_evens = n - no_of_odds
	flag = 0
	for i in range(1, no_of_odds + 1, 2):
		if no_of_odds >= i and no_of_evens >= x - i and (x - i >= 0):
			flag = 1
			break
	if flag == 1:
		print('Yes')
	else:
		print('No')


def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(u, v) = (0, 0)
	for i in a:
		if i % 2 == 0:
			u += 1
		else:
			v += 1
	if not v:
		print('No')
		return
	if u + 1 >= x:
		print('Yes')
		return
	if (x - (u + 1)) % 2 == 1:
		if not u:
			print('No')
			return
		u -= 1
	if u + 1 + (v - 1) // 2 * 2 >= x:
		print('Yes')
		return
	print('No')
	return
t = int(input())
for _ in range(t):
	solve()


t = int(input())
import math
delay = []
for _ in range(t):
	(n, x) = map(int, input().split())
	line = input().split()
	line = [int(l) % 2 for l in line]
	odd = sum(line)
	even = n - odd
	falg = False
	for i in range(x + 1):
		if odd >= i and even >= x - i and (i % 2 == 1):
			print('Yes')
			falg = True
			break
	if not falg:
		print('No')


T = int(input())
for t in range(T):
	(n, x) = map(int, input().rstrip().split())
	l = list(map(int, input().rstrip().split()))
	dispari = 0
	for el in l:
		if el % 2:
			dispari += 1
	pari = n - dispari
	if dispari % 2:
		dispari_scelti = dispari
	else:
		dispari_scelti = dispari - 1
	if dispari_scelti + n - dispari >= x and dispari and (dispari != n or x % 2):
		print('Yes')
	else:
		print('No')


def is_possible(a, x):
	odd = 0
	even = 0
	k = 0
	for i in range(len(a)):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if even >= x:
		k = x - 1
	else:
		k = even
	if x % 2 == 0 and k % 2 == 0 and (k != 0) or (x % 2 == 1 and k % 2 == 1):
		k = k - 1
	if x - k <= odd and (x - k) % 2 != 0:
		res.append('YES')
	else:
		res.append('NO')
t = int(input())
res = []
for i in range(t):
	a = []
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	is_possible(a, x)
for i in range(t):
	print(res[i])


from sys import stdin
from collections import deque
mod = 10 ** 9 + 7
import sys
import random
from queue import PriorityQueue
from bisect import bisect_right
from bisect import bisect_left
from collections import defaultdict
from math import sqrt, factorial, gcd, log2, inf, ceil
import heapq
input = lambda : sys.stdin.readline().rstrip()
from sys import stdin, stdout
from heapq import heapify, heappush, heappop
from itertools import permutations
from math import factorial as f

def ncr(n, r, p):
	num = den = 1
	for i in range(r):
		num = num * (n - i) % p
		den = den * (i + 1) % p
	return num * pow(den, p - 2, p) % p
import sys
for i in range(10 ** 5):
	pass
for i in range(10 ** 5):
	pass
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	ok = False
	for i in range(1, x + 1, 2):
		if odd >= i and even >= x - i:
			ok = True
	if ok:
		print('Yes')
	else:
		print('No')


def sum_is_odd(array, n, x):
	if x > n:
		return 'No'
	n_odd = 0
	for i in array:
		n_odd += i % 2
	n_even = n - n_odd
	if n_even >= x - 1:
		if n_odd >= 1:
			return 'Yes'
		else:
			return 'No'
	else:
		dif = x - n_even
		if dif % 2 == 0:
			if dif == x:
				return 'No'
			if n_odd >= dif + 1:
				return 'Yes'
			return 'No'
		else:
			if n_odd >= dif:
				return 'Yes'
			return 'No'
num_test_cases = int(input())
for k in range(num_test_cases):
	(n, x) = (int(i) for i in input().split(' '))
	array = [int(j) for j in input().split(' ')]
	print(sum_is_odd(array, n, x))


def solution():
	(n, x) = map(int, input().split())
	nums = [int(a) for a in input().split()]
	if n == x:
		if sum(nums) % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	if x % 2 != 0:
		if any((a % 2 != 0 for a in nums)):
			return 'Yes'
		else:
			return 'No'
	if any((a % 2 != 0 for a in nums)) and any((a % 2 == 0 for a in nums)):
		return 'Yes'
	return 'No'
t = int(input())
while t:
	t -= 1
	print(solution())


import collections

class Solution:

	def solve(self, n, x, arr):
		(odds, evens) = (0, 0)
		for num in arr:
			if num & 1:
				odds += 1
			else:
				evens += 1
		for havingOdd in range(1, min(x, odds) + 1, 2):
			if havingOdd + evens >= x:
				return True
		return False
sol = Solution()
t = int(input().strip())
ans = []
for i in range(t):
	[n, x] = list(map(int, input().strip().split()))
	arr = list(map(int, input().strip().split()))
	ans.append(sol.solve(n, x, arr))
for a in ans:
	print('Yes' if a else 'No')


t = int(input())
for T in range(t):
	(n, x) = [int(i) for i in input().split()]
	array = [int(i) for i in input().split()]
	(even, odd) = (0, 0)
	for k in array:
		if k % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd % 2 == 0:
		odd -= 1
	if even == 0 and x % 2 == 0:
		print('No')
	elif odd > 0 and odd + even >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for j in range(n):
		if l[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd >= x and even >= 1:
		print('yes')
	elif odd == 0:
		print('no')
	elif even == 0:
		if x % 2 == 0:
			print('no')
		else:
			print('yes')
	elif even >= x and odd >= 1:
		print('yes')
	elif odd <= x and even <= x:
		if odd + even == x and odd % 2 != 0:
			print('yes')
		elif odd + even == x and odd % 2 == 0:
			print('no')
		elif odd + even > x:
			print('yes')
	else:
		print('no')


for test_i in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	s = sum(arr)
	if x == n:
		print('Yes' if s % 2 == 1 else 'No')
	else:
		(has_odd, has_even) = (arr[0] % 2, (arr[0] + 1) % 2)
		i = 0
		if has_odd:
			while i < n:
				if arr[i] % 2 == 0:
					has_even = True
					break
				i += 1
		else:
			while i < n:
				if arr[i] % 2 == 1:
					has_odd = True
					break
				i += 1
		if x % 2 == 1:
			print('Yes' if has_odd else 'No')
		else:
			print('Yes' if has_even and has_odd else 'No')


MOD = 10 ** 9 + 7
INT_MAX = 10 ** 20 + 7

def INPUT():
	return list((int(i) for i in input().split()))

def LIST_1D_ARRAY(n):
	return [0 for _ in range(n)]

def LIST_2D_ARRAY(m, n):
	return [[0 for _ in range(n)] for _ in range(m)]

def power(a, x):
	res = 1
	while x > 0:
		if x & 1:
			res = res * a % MOD
		a = a * a % MOD
		x //= 2
	return res % MOD

def NCR_MOD(n, r):
	num = 1
	for i in range(n, n - r, -1):
		num = num * i % MOD
	for j in range(1, r + 1):
		num = num * power(j, MOD - 2) % MOD
	return num
import math
from collections import deque

def calc(n, x, A):
	odd = 0
	even = 0
	for i in range(n):
		if A[i] & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		return 'NO'
	if n > x:
		if x & 1:
			if odd >= 1:
				return 'YES'
			return 'NO'
		elif odd < x:
			return 'YES'
		elif even > 0:
			return 'YES'
		else:
			return 'NO'
	else:
		if odd & 1:
			return 'YES'
		return 'NO'
for _ in range(int(input())):
	(n, x) = INPUT()
	A = INPUT()
	print(calc(n, x, A))
	print()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = [int(i) for i in input().split()]
	odd = 0
	for i in range(n):
		if arr[i] % 2:
			odd += 1
	even = n - odd
	if odd % 2 == 1 and (even > 0 or x % 2 == 1):
		print('YES')
	elif odd % 2 == 0 and odd > 0 and (x != n) and (x % 2 == 1 or even > 0):
		print('YES')
	else:
		print('NO')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odds = 0
	evens = 0
	for j in range(n):
		if arr[j] % 2:
			odds += 1
		else:
			evens += 1
	flag = 1
	if x % 2:
		if evens >= x - 1:
			if odds < 1:
				flag = 0
		else:
			remainder = x - (evens - evens % 2)
			if odds < remainder:
				flag = 0
	elif evens >= x - 1:
		if odds < 1:
			flag = 0
	else:
		remainder = x - (evens - (evens + 1) % 2)
		if odds < remainder or evens == 0:
			flag = 0
	if flag:
		print('Yes')
	else:
		print('No')


def possible_odd_sum(data):
	(x, array) = data
	if len(array) == 1:
		return 'YES' if array[0] % 2 != 0 else 'NO'
	even_number = len([number for number in array if number % 2 == 0])
	odd_number = len(array) - even_number
	need_odd = 1 if even_number >= x else x - even_number
	if need_odd % 2 == 0:
		need_odd = min(x, need_odd + 1)
	return 'YES' if odd_number >= need_odd and need_odd % 2 != 0 else 'NO'
data = []
for _ in range(int(input())):
	x = int(input().split()[1])
	array = [int(s) for s in input().split()]
	data.append((x, array))
for d in data:
	print(possible_odd_sum(d))


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l2 = [int(i) for i in input().split()]
	l1 = []
	for i in l2:
		l1.append(i % 2)
	l1.sort()
	s = sum(l1[0:x])
	if s % 2 != 0:
		print('Yes')
	elif l1.count(1) == n:
		print('No')
	elif l1[x:n].count(1) > 0:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(a, n) = map(int, input().split())
	(odd, even, i, need, found) = (0, 0, 1, 0, 0)
	arr = [int(new) for new in input().split()]
	for x in arr:
		if x % 2:
			odd += 1
		else:
			even += 1
	while i <= n and i <= odd:
		need = n - i
		if need <= even:
			found += 1
			break
		i += 2
	if found:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	l = [i % 2 for i in arr]
	c = l.count(1)
	if c == 0 or (c == n and x % 2 == 0) or (c % 2 == 0 and n == x):
		print('No')
	else:
		print('Yes')


def readintlst():
	return list(map(int, input().split(' ')))

def readn():
	return int(input())
N = readn()
for _ in range(N):
	(n, x) = readintlst()
	nums = readintlst()
	odd = even = 0
	for nn in nums:
		if nn & 1 == 1:
			odd += 1
		else:
			even += 1
	ans = 0
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			ans = 1
			break
	if ans:
		print('Yes')
	else:
		print('No')


def solve():
	(n, x) = [int(i) for i in input().split()]
	arr = [int(i) for i in input().split()]
	odd = []
	even = []
	for ele in arr:
		if ele % 2 == 0:
			even.append(ele)
		else:
			odd.append(ele)
	for i in range(1, x + 1, 2):
		if len(odd) >= i and len(even) >= x - i:
			print('Yes')
			return
	print('No')
t = int(input())
while t:
	solve()
	t -= 1


import sys

def input():
	return sys.stdin.readline().rstrip()
t = int(input())
answers = []
for _ in range(t):
	(n, x) = [int(i) for i in input().split()]
	arr = [int(i) for i in input().split()]
	num_even = 0
	num_odd = 0
	for a in arr:
		if a % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	if num_odd == 0:
		ans = 'NO'
	else:
		num_odd -= 1
		x -= 1
		if x % 2 == 0:
			if num_odd // 2 + num_even // 2 >= x // 2:
				ans = 'YES'
			else:
				ans = 'NO'
		elif num_even == 0:
			ans = 'NO'
		else:
			num_even -= 1
			x -= 1
			if num_odd // 2 + num_even // 2 >= x // 2:
				ans = 'YES'
			else:
				ans = 'NO'
	answers.append(ans)
print(*answers, sep='\n')


t = int(input())
count = 0
while count < t:

	def numOdds(L):
		ans = 0
		for i in L:
			if i % 2 == 1:
				ans += 1
		return ans
	count += 1
	l = list(map(int, input().split(' ')))
	n = l[0]
	x = l[1]
	l = list(map(int, input().split(' ')))
	ans = False
	o = numOdds(l)
	e = n - o
	for i in range(1, min(o, x) + 1, 2):
		if e >= x - i:
			ans = True
			break
	if ans:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	e = o = 0
	for _ in l:
		if _ % 2 == 0:
			e += 1
		else:
			o += 1
	if o >= b:
		if b % 2 == 1:
			print('Yes')
		elif e > 0:
			print('Yes')
		else:
			print('No')
	elif o == 0:
		print('No')
	elif o % 2 == 0:
		if b <= o - 1 + e:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline
MOD = 10 ** 9 + 7
for t in range(int(input())):
	(n, m) = map(int, input().split())
	data = list(map(int, input().split()))
	ods = evs = 0
	for i in data:
		if i & 1:
			ods += 1
		else:
			evs += 1
	if ods > 0:
		if not evs:
			if m & 1 and m <= ods:
				print('Yes')
			else:
				print('No')
		elif ods & 1 and m <= ods + evs or (not ods & 1 and m <= ods - 1 + evs):
			print('Yes')
		else:
			print('No')
	else:
		print('No')


t = int(input())
while t != 0:
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	arr = list(map(int, input().split()))
	num = {}
	num['odd'] = 0
	num['even'] = 0
	for i in arr:
		if i % 2 == 0:
			num['even'] = num['even'] + 1
		else:
			num['odd'] = num['odd'] + 1
	if x % 2 == 1:
		ev = 0
		od = x
		st = 0
		while ev < x:
			if num['even'] >= ev and num['odd'] >= od:
				print('YES')
				st = 1
				break
			else:
				ev = ev + 2
				od = od - 2
		if st == 0:
			print('NO')
	else:
		ev = 1
		od = x - 1
		st = 0
		i = 1
		while ev < x and od > 0:
			if num['even'] >= ev and num['odd'] >= od:
				print('YES')
				st = 1
				break
			else:
				ev = ev + 2
				od = od - 2
		if st == 0:
			print('NO')
	t = t - 1


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	count = 0
	c = 0
	for j in range(n):
		if a[j] % 2 == 0:
			count += 1
		else:
			c += 1
	if count >= x:
		if c >= 1:
			print('Yes')
		else:
			print('No')
	else:
		if count == 0 and x % 2 == 0:
			print('No')
			continue
		if count == 0 and x % 2 != 0:
			print('Yes')
			continue
		if count != 0:
			if (x - count) % 2 != 0:
				print('Yes')
			elif c >= x - count + 1:
				print('Yes')
			else:
				print('No')


import sys
from collections import Counter

def input():
	return sys.stdin.readline().strip()

def list2d(a, b, c):
	return [[c] * b for i in range(a)]

def list3d(a, b, c, d):
	return [[[d] * c for j in range(b)] for i in range(a)]

def list4d(a, b, c, d, e):
	return [[[[e] * d for j in range(c)] for j in range(b)] for i in range(a)]

def ceil(x, y=1):
	return int(-(-x // y))

def INT():
	return int(input())

def MAP():
	return map(int, input().split())

def LIST(N=None):
	return list(MAP()) if N is None else [INT() for i in range(N)]

def Yes():
	print('Yes')

def No():
	print('No')

def YES():
	print('YES')

def NO():
	print('NO')
INF = 10 ** 19
MOD = 10 ** 9 + 7
for _ in range(INT()):
	(N, K) = MAP()
	A = [a & 1 for a in LIST()]
	C = Counter(A)
	if C[1] == 0:
		No()
		continue
	K -= 1
	C[1] -= 1
	if C[0] >= K:
		Yes()
	else:
		if C[0] % 2 == K % 2:
			K -= C[0]
		else:
			if C[0] == 0:
				No()
				continue
			K -= C[0] - 1
		if C[1] >= K:
			Yes()
		else:
			No()


def solve():
	(n, x) = map(int, input().split())
	lista = list(map(int, input().split()))
	odd = 0
	for i in lista:
		if i % 2:
			odd += 1
	t = (odd - 1) // 2 * 2
	if t > x - 1:
		t = x - 1 - (x - 1) % 2
	if odd and x - 1 - t <= n - odd:
		print('Yes')
	else:
		print('No')

def main():
	t = int(input())
	for i in range(0, t):
		solve()
main()


t = int(input())
for i in range(t):
	l = input().split()
	(n, x) = (int(l[0]), int(l[1]))
	l = input().split()
	(o, e) = (0, 0)
	for j in l:
		if int(j) % 2 == 1:
			o += 1
		else:
			e += 1
	if x == n:
		if o % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif o == 0:
		print('No')
	elif x % 2 == 0:
		if e == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


R1 = lambda : list(map(int, input().split()))
R2 = lambda : int(input())
for _ in range(R2()):
	(n, x) = R1()
	s = 0
	for i in R1():
		if i % 2 != 0:
			s += 1
	if s == 0 or (n == x and s % 2 == 0) or (s == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	l1 = list(map(int, input().split()))
	count = 0
	for i in l1:
		if i % 2 != 0:
			count = count + 1
	even = n - count
	p = count - x
	if count == 0:
		print('No')
		t = t - 1
		continue
	if x <= count:
		if x % 2 != 0:
			print('Yes')
		elif even > 0:
			print('Yes')
		else:
			print('No')
	elif count % 2 != 0:
		print('Yes')
	elif n - x > 0:
		print('Yes')
	else:
		print('No')
	t = t - 1


def existsSum(a, n, x):
	num_odd = 0
	num_even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	flag = False
	for i in range(1, min(num_odd, x) + 1, 2):
		if num_even >= x - i:
			flag = True
			break
	return flag
respuesta = []
t = int(input())
for i in range(0, t):
	(n, x) = map(int, input().split())
	a = [int(i) for i in input().split()]
	if existsSum(a, n, x):
		respuesta.append('Yes')
	else:
		respuesta.append('No')
for i in range(len(respuesta)):
	print(respuesta[i])


q = int(input())
for ii in range(q):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	par = 0
	npar = 0
	for i in l:
		if i % 2 == 1:
			npar += 1
		else:
			par += 1
	if x == n:
		if npar % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif npar > 0 and par > 0:
		print('Yes')
	elif par == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


a = 0
b = 0
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	L = map(int, input().split())
	a = 0
	b = 0
	for e in L:
		if e % 2 == 0:
			a = a + 1
		else:
			b = b + 1
	if b >= x:
		if a != 0:
			print('Yes')
		elif x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif b % 2 != 0:
		print('Yes')
	elif a > x - b and b != 0:
		print('Yes')
	else:
		print('No')


import sys
Ri = lambda : [int(x) for x in sys.stdin.readline().split()]
ri = lambda : sys.stdin.readline().strip()

def input():
	return sys.stdin.readline().strip()

def list2d(a, b, c):
	return [[c] * b for i in range(a)]

def list3d(a, b, c, d):
	return [[[d] * c for j in range(b)] for i in range(a)]

def list4d(a, b, c, d, e):
	return [[[[e] * d for j in range(c)] for j in range(b)] for i in range(a)]

def ceil(x, y=1):
	return int(-(-x // y))

def INT():
	return int(input())

def MAP():
	return map(int, input().split())

def LIST(N=None):
	return list(MAP()) if N is None else [INT() for i in range(N)]

def Yes():
	print('Yes')

def No():
	print('No')

def YES():
	print('YES')

def NO():
	print('NO')
INF = 10 ** 18
MOD = 10 ** 9 + 7
for _ in range(int(ri())):
	(n, x) = Ri()
	a = Ri()
	if x > n:
		No()
	else:
		noo = 0
		noe = 0
		for i in a:
			if i % 2 == 0:
				noe += 1
			else:
				noo += 1
		if x % 2 == 0:
			if noo == 0 or noe == 0:
				No()
			else:
				noo -= 1
				noe -= 1
				x -= 2
				if noo >= x and noe >= x:
					Yes()
				else:
					x -= noo // 2 * 2
					if noe >= x:
						Yes()
					else:
						No()
		elif noo == 0:
			No()
		else:
			noo -= 1
			x -= 1
			if noo >= x:
				Yes()
			else:
				x -= noo // 2 * 2
				if x > noe:
					No()
				else:
					Yes()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = [*map(int, input().split())]
	evens = sum((1 for i in a if i % 2 == 0))
	odds = n - evens
	ans = 'NO'
	for i in range(x):
		if i <= evens and x - i <= odds and ((x - i) % 2 == 1):
			ans = 'YES'
			break
	print(ans)


t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	num1 = list(map(int, input().split()))
	s = 0
	p = 0
	for j in range(n):
		if num1[j] % 2 != 0:
			s += 1
		else:
			p += 1
	if x % 2 == 0:
		if s < x:
			if s % 2 == 1:
				print('Yes')
			elif s == 0:
				print('No')
			elif s - 1 + p >= x:
				print('Yes')
			else:
				print('No')
		elif p == 0:
			print('No')
		else:
			print('Yes')
	elif s < x:
		if s % 2 == 1:
			print('Yes')
		elif s == 0:
			print('No')
		elif s - 1 + p >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	(e, o) = (0, 0)
	for i in lst:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	ans = False
	for i in range(1, o + 1, 2):
		if e + i >= x and i <= x:
			ans = True
	if ans:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	l1 = [i % 2 == 0 for i in l]
	(c1, c2) = (l1.count(True), l1.count(False))
	if c2 == 0:
		print('NO')
	elif c2 % 2 == 0 and x == n:
		print('NO')
	elif c1 < x:
		tp = x - c1
		if tp % 2 == 0 and c2 < tp:
			print('NO')
		elif c1 == 0 and x % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('YES')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	for i in a:
		odd += i & 1
	even = n - odd
	if odd == 0:
		print('No')
		continue
	p = odd - (odd & 1 ^ 1)
	if x <= p:
		if x & 1:
			print('Yes')
			continue
		elif even > 0:
			print('Yes')
			continue
	elif even >= x - p:
		print('Yes')
		continue
	print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for el in a:
		if el & 1:
			odd += 1
		else:
			even += 1
	if odd == 0 or (n == x and odd % 2 == 0) or (odd == n and x % 2 == 0):
		print('NO')
	else:
		print('YES')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	a = 0
	b = 0
	for i in l:
		if i % 2:
			a += 1
		else:
			b += 1
	for i in range(1, x + 1, 2):
		if a >= i and b >= x - i:
			print('Yes')
			break
	else:
		print('No')


tc = int(input())
for _ in range(tc):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('NO')
	else:
		x -= 1
		odd -= 1
		if x % 2 == 0:
			if x <= odd or x <= even or x - odd // 2 * 2 <= even:
				print('YES')
			else:
				print('NO')
		elif 0 < even:
			if x <= even or x - odd // 2 * 2 <= even or x - 1 <= odd:
				print('YES')
			else:
				print('NO')
		else:
			print('NO')


test = int(input())
for tests in range(test):
	arr = [int(i) for i in input().split()]
	n = arr[0]
	k = arr[1]
	arr = [int(i) for i in input().split()]
	orr = []
	err = []
	for arrs in arr:
		if arrs % 2 == 0:
			err.append(0)
		else:
			orr.append(1)
	evennos = len(err)
	oddnos = len(orr)
	if k == n:
		if oddnos:
			if k % 2 == 0:
				if oddnos == n:
					print('no')
				elif oddnos % 2 == 0:
					print('no')
				else:
					print('yes')
			elif oddnos % 2 == 1:
				print('yes')
			else:
				print('no')
		else:
			print('no')
	elif oddnos:
		if k == 1:
			print('yes')
		elif evennos:
			print('yes')
		elif k % 2 == 0:
			print('no')
		else:
			print('yes')
	else:
		print('no')


from sys import stdin, stdout
Pi = lambda x: stdout.write(str(x) + '\n')
Ps = lambda x: stdout.write(str(x))
S = lambda x: x * (x + 1) // 2
I = lambda x: 1 + 2 * x
R = lambda : stdin.readline()
Ri = lambda x: map(int, x.split())
Rs = lambda x: map(str, x.split())
Rf = lambda x: map(float, x.split())
MaxN = int(100000.0) + 100
mod = int(1000000000.0) + 7

def carts(n):
	return (3 * n ** 2 + n) // 2

def lower_bound(n):
	(L, R, ans) = (0, 100000, 0)
	while L <= R:
		mid = R - (R - L) // 2
		x = carts(mid)
		if x <= n:
			ans = x
			L = mid + 1
		else:
			R = mid - 1
	return ans

def f(n):
	ans = 0
	while n:
		ans += 1
		n &= n - 1
	return ans

def main():
	cases = int(R())
	for t in range(cases):
		(n, x) = Ri(R())
		A = list(Ri(R()))
		odd = 0
		for y in A:
			if y % 2:
				odd += 1
		even = n - odd
		if odd:
			odd -= 1
			m = odd // 2
			x -= 1
			x -= min(x // 2 * 2, m * 2)
			if even >= x:
				Pi('Yes')
			else:
				Pi('No')
		else:
			Pi('No')
main()


for _ in range(int(input())):
	(_, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for elem in a:
		if elem % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	if odd % 2 == 0:
		odd -= 1
	chosenElems = 1
	odd -= 1
	while odd >= 2 and chosenElems + 2 <= x:
		chosenElems += 2
		odd -= 2
	chosenElems += even
	if chosenElems >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	c = 0
	for y in arr:
		if y % 2 == 0:
			c += 1
	flag = False
	for i in range(1, min(n + 1, x + 1), 2):
		if i <= n - c and x - i <= c:
			flag = True
			break
	if flag:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	(A, a) = ([i % 2 for i in list(map(int, input().split()))], 'No')
	o = sum(A)
	e = n - o
	for i in range(1, o + 1, 2):
		if x - i < 0:
			break
		if e >= x - i:
			a = 'Yes'
			break
	print(a)


t = int(input())
while t:
	(x, y) = input().split()
	x = int(x)
	y = int(y)
	o = 0
	e = 0
	z = input()
	lis = (int(n) for n in z.split())
	for r in lis:
		if r % 2 == 0:
			e += 1
		else:
			o += 1
	m = min(e, y - 1)
	d = y - m
	if d % 2 == 0:
		d += 1
	if o >= d and d <= y:
		print('YES')
	else:
		print('NO')
	t -= 1


import math as mt

def st(arr, x):
	o = 0
	e = 0
	for i in arr:
		if i % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	if o == 0:
		return 'No'
	elif x == len(arr):
		if o % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	elif x < len(arr):
		if o == len(arr) and x % 2 == 0:
			return 'No'
		else:
			return 'Yes'
t = int(input())
ans = []
for i in range(t):
	nk = list(map(int, input().rstrip().split()))
	arr = list(map(int, input().rstrip().split()))
	x = nk[1]
	r = st(arr, x)
	ans.append(r)
for i in ans:
	print(i)


from fractions import Fraction
import sys
import bisect
import heapq
from math import *
from collections import Counter as counter
from itertools import combinations as comb
from itertools import permutations as permutate
from bisect import bisect_left as bl
from bisect import bisect_right as br
from bisect import bisect
mod = 1000000007

def inp():
	return sys.stdin.readline().strip()

def out(var):
	sys.stdout.write(str(var))

def lis():
	return list(map(int, inp().split()))

def stringlis():
	return list(map(str, inp().split()))

def sep():
	return map(int, inp().split())

def strsep():
	return map(str, inp().split())

def graph(vertex):
	return [[] for i in range(0, vertex + 1)]

def zerolist(n):
	return [0] * n

def nextline():
	out('\n')

def testcase(t):
	for p in range(t):
		solve()

def printlist(a):
	for p in range(0, len(a)):
		out(str(a[p]) + ' ')

def lcm(a, b):
	return a * b // gcd(a, b)

def solve():
	(n, x) = sep()
	a = lis()
	odd = 0
	even = 0
	for i in range(0, n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif even >= x:
		if odd > 0:
			print('Yes')
		else:
			print('No')
	elif (x - even) % 2 == 0:
		if odd > x - even and even > 0:
			print('Yes')
		else:
			print('No')
	elif odd >= x - even:
		print('Yes')
	else:
		print('No')
testcase(int(inp()))


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	aa = map(int, input().split())
	nodd = sum((x % 2 for x in aa))
	neven = n - nodd
	if x == n:
		print('Yes' if nodd % 2 else 'No')
	else:
		print('Yes' if nodd > 0 and (x % 2 == 1 or neven > 0) else 'No')


import sys, math
from collections import deque

def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if x == n and odd % 2 == 0:
		print('No')
	elif odd == 0 or (x % 2 == 0 and even == 0):
		print('No')
	else:
		print('Yes')
for _ in range(int(input())):
	solve()


n = int(input())
for cases in range(n):
	(n, x) = map(int, input().split(' '))
	lst = []
	lst = list(map(int, input().split(' ')))
	a = 0
	b = 0
	for i in lst:
		if i % 2 == 1:
			a += 1
		else:
			b += 1
	k = False
	for i in range(1, min(a, x) + 1, 2):
		if b >= x - i:
			k = True
	print('Yes') if k else print('No')


t = int(input())
results = []
for i in range(t):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	a = list(map(int, input().split()))
	odd = []
	even = []
	for i in a:
		if i % 2 == 0:
			even.append(i)
		else:
			odd.append(i)
	if len(odd) == 0:
		results.append('NO')
	elif len(odd) % 2 == 1:
		z = len(odd)
		if z + len(even) < x:
			results.append('NO')
		elif len(even) == 0 and x % 2 == 0:
			results.append('NO')
		else:
			results.append('YES')
	else:
		z = len(odd) - 1
		if z + len(even) < x:
			results.append('NO')
		elif len(even) == 0 and x % 2 == 0:
			results.append('NO')
		else:
			results.append('YES')
for g in results:
	print(g)


import sys
import math

def get_array():
	return list(map(int, sys.stdin.readline().strip().split()))

def get_ints():
	return map(int, sys.stdin.readline().strip().split())

def input():
	return sys.stdin.readline().strip()
for _ in range(int(input())):
	(n, x) = get_ints()
	a = get_array()
	b = []
	c = []
	tag = 0
	for i in range(n):
		if a[i] % 2 == 0:
			b.append(a[i])
		else:
			c.append(a[i])
	even = len(b)
	odd = len(c)
	j = 1
	while odd >= j:
		if x - j < 0:
			break
		if even >= x - j:
			tag = 1
		j = j + 2
	if tag == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, k) = (int(j) for j in input().split())
	a = [int(j) for j in input().split()]
	e = 0
	o = 0
	for i in range(len(a)):
		if a[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif o == n and k % 2 == 0:
		print('No')
	elif o == n and k % 2 == 1:
		print('Yes')
	else:
		for i in range(1, o + 1, 2):
			if k - i <= e:
				print('Yes')
				break
		else:
			print('No')


from collections import Counter
from collections import OrderedDict
from collections import defaultdict
from math import ceil, floor, log

def freq_count(mylist):
	return Counter(mylist)
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = [int(x) for x in input().split()]
	countod = 0
	countev = 0
	for each in arr:
		if each % 2 != 0:
			countod += 1
		else:
			countev += 1
	if countod > 0:
		countod -= 1
		if countev >= x - 1:
			print('Yes')
			continue
		else:
			req = x - 1
			if countod % 2 != 0:
				countod -= 1
			if countod >= req:
				if req % 2 == 0:
					print('Yes')
				elif countev >= 1:
					print('Yes')
				else:
					print('No')
			else:
				req -= countod
				if req <= countev:
					print('Yes')
				else:
					print('No')
	else:
		print('No')


from sys import stdin, stdout, setrecursionlimit
input = stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = [int(i) % 2 for i in input().split()]
	cou2 = 0
	cou1 = 0
	for b in a:
		if b == 0:
			cou1 += 1
		else:
			cou2 += 1
	for i in range(1, min(x + 1, cou2 + 1), 2):
		if x - i <= cou1:
			print('Yes')
			break
	else:
		print('No')


import sys
input = sys.stdin.readline
output = sys.stdout

def inlt():
	return list(map(int, input().split()))

def solve(n, x, a):
	res = 'No'
	even_count = 0
	odd_count = 0
	for i in range(n):
		if a[i] % 2 != 0:
			odd_count += 1
	even_count = n - odd_count
	if x < n and odd_count >= 1:
		res = 'Yes'
	if x < n and even_count >= 1:
		res = 'Yes'
	if odd_count == n and x % 2 == 0:
		res = 'No'
	else:
		res = 'Yes'
	if even_count == n:
		res = 'No'
	if n == x and odd_count % 2 == 0:
		res = 'No'
	output.write(res + '\n')
t = int(input())
for i in range(t):
	l = inlt()
	a = inlt()
	solve(l[0], l[1], a)


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = []
	odd = []
	k = 0
	for i in arr:
		if i % 2 == 0:
			even.append(i)
		else:
			odd.append(i)
	for i in range(x + 1):
		if i % 2 != 0 and len(odd) >= i and (len(even) >= x - i):
			print('YES')
			k = 1
			break
	if k == 0:
		print('NO')


def solve(arr, n, x):
	num_even = 0
	num_odd = 0
	for el in arr:
		if el % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	if num_odd == 0:
		return 'No'
	i = 1
	while i <= min(x, num_odd):
		if num_even >= x - i:
			return 'Yes'
		i += 2
	return 'No'
t = int(input())
import math
delay = []
for _ in range(t):
	(n, x) = map(int, input().split())
	line = input().split()
	line = [int(l) for l in line]
	ans = solve(line, len(line), x)
	print(ans)


import math, sys
from sys import stdin, stdout
from collections import Counter, defaultdict, deque
input = stdin.readline
I = lambda : int(input())
li = lambda : list(map(int, input().split()))

def solve():
	(n, k) = li()
	a = li()
	(c, d) = (0, 0)
	for i in range(n):
		if a[i] % 2:
			d += 1
		else:
			c += 1
	flag = 0
	for i in range(1, k + 1, 2):
		if i <= d and k - i <= c:
			flag = 1
	if flag:
		print('Yes')
	else:
		print('No')
for _ in range(I()):
	solve()


def canselect(l, x):
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		return False
	maxodd = min(odd, x)
	if maxodd % 2 == 0:
		maxodd -= 1
	if x - maxodd > even:
		return False
	return True
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = [int(i) for i in input().split()]
	if canselect(l, x):
		print('Yes')
	else:
		print('No')


from io import BytesIO, IOBase
import sys
import os

def Iint():
	return int(input())

def Ilist():
	return list(map(int, input().split()))

def Imap():
	return map(int, input().split())

def Plist(li, s=' '):
	print(s.join(map(str, li)))

def main():
	t = Iint()
	for _ in range(t):
		(n, x) = Imap()
		a = Ilist()
		ao = sum((i % 2 for i in a))
		ae = n - ao
		if ao == 0 or (x % 2 == 0 and ae == 0):
			print('No')
			continue
		if x <= ae:
			print('YES')
			continue
		if (x - ae) % 2 == 0:
			if ae == 0:
				print('No')
				continue
			ae -= 1
		x -= ae
		if x <= ao:
			print('Yes')
		else:
			print('No')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))

def input():
	return sys.stdin.readline().rstrip('\r\n')
main()


t = int(input())

def solve(even_n, odd_n, x):
	if x == 1:
		if odd_n >= 1:
			print('Yes')
		else:
			print('No')
		return
	if x == 2:
		if odd_n >= 1 and even_n >= 1:
			print('Yes')
		else:
			print('No')
		return
	if odd_n % 2 == 0:
		odd_n -= 1
	if even_n == 0:
		if x % 2 != 0:
			print('Yes')
		else:
			print('No')
		return
	if odd_n + even_n >= x and odd_n > 0:
		print('Yes')
	else:
		print('No')
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd_n = 0
	even_n = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even_n += 1
		else:
			odd_n += 1
	solve(even_n, odd_n, x)


t = int(input())
for i in range(t):
	(ev, c, od) = (0, 0, 0)
	(need, have) = (0, 0)
	(n, x) = input().split()
	x = int(x)
	n = int(n)
	li = [int(i) for i in input().split()]
	for i in li:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	for i in range(1, min(od + 1, x + 1), 2):
		have = x
		need = have - i
		if need <= ev:
			c = 1
	if c:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	array = list(map(int, input().split()))
	d = {0: 0, 1: 0}
	for j in range(n):
		d[array[j] % 2] = d[array[j] % 2] + 1
	print
	if x % 2 == 0 and d[0] == 0:
		print('No')
	elif d[1] == 0:
		print('No')
	elif x == n:
		if sum(array) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


t = int(input())
for u in range(t):
	(n, k) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			odd += 1
		else:
			even += 1
	deff = 1
	if even == 0:
		deff = 0
	elif k == n and sum(a) % 2 == 0:
		deff = 0
	elif odd == 0 and k % 2 == 0:
		deff = 0
	if deff == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for i in range(t):
	s = input().split(' ')
	n = int(s[0])
	x = int(s[1])
	o = 0
	e = 0
	nums = input().split(' ')
	for num in nums:
		num = int(num)
		if num % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif e == 0 and x % 2 == 0:
		print('No')
	else:
		if o % 2 == 0:
			o -= 1
		if o + e >= x:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	if x == 1:
		isOdd = False
		for i in a:
			if i % 2:
				isOdd = True
				break
		if isOdd:
			print('Yes')
		else:
			print('No')
	else:
		count_odd = 0
		count_even = 0
		for i in a:
			if i % 2:
				count_odd += 1
			else:
				count_even += 1
		if count_odd == 0:
			print('No')
		elif count_odd == n:
			if x % 2:
				print('Yes')
			else:
				print('No')
		elif count_odd > 0:
			x = x - 1
			count_odd -= 1
			if x <= count_even:
				print('Yes')
			else:
				x = x - (count_odd - count_odd % 2)
				if x > count_even:
					print('No')
				else:
					print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	ones = 0
	for i in range(n):
		if l[i] % 2 == 1:
			ones += 1
	zero = n - ones
	if ones == n:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif zero == n:
		print('No')
	elif ones % 2 != 0:
		if n >= x:
			print('Yes')
		else:
			print('No')
	elif zero >= x - (ones - 1):
		print('Yes')
	else:
		print('No')


import math
import sys
import itertools
import random

def lcm(x, y):
	return x * y // math.gcd(x, y)

def hcf(x, y):
	return math.gcd(x, y)

def primes(n):
	prime = [True for _ in range(0, n + 1)]
	res = []
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[p] = False
		p += 1
	for i in range(0, n + 1):
		if prime[i] == True:
			res.append(i)
	return res

def primeFactors(n):
	res = []
	while n % 2 == 0:
		res.append(2)
		n //= 2
	for i in range(3, math.sqrt(n) + 1, 2):
		while n % i == 0:
			res.append(i)
			n //= i
	if n > 2:
		res.append(n)
	return res
for _ in range(0, int(input())):
	(n, x) = map(int, input().strip().split())
	l = list(map(int, input().strip().split()))
	e = 0
	o = 0
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if e == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif o == 0:
		print('No')
	else:
		o -= 1
		e += o // 2 * 2
		if e >= x - 1:
			print('Yes')
		else:
			print('No')


import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
from collections import Counter
for i in range(int(input())):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	f = 0
	for i in range(n):
		if arr[i] % 2 != 0:
			f += 1
	if f == 0:
		print('No')
	elif f == n and k % 2 == 0:
		print('No')
	elif k == n and f % 2 == 0:
		print('No')
	else:
		print('Yes')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = [int(num) for num in input().split()]
	(e, o) = (list(filter(lambda n: n % 2 == 0, a)), list(filter(lambda n: n % 2 != 0, a)))
	if len(o) == 0 or (x % 2 == 0 and n == len(o)) or (len(o) % 2 == 0 and n == x):
		print('NO')
	else:
		print('YES')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = [int(v) for v in input().split()]
	o = 0
	for j in range(n):
		if a[j] % 2 != 0:
			o = o + 1
	e = n - o
	if o == 0:
		print('No')
	elif x == n:
		if o % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		y = 1
		z = x - 1
		f = 0
		while y <= x:
			if y <= o and z <= e:
				f = 1
				break
			else:
				y = y + 2
				z = z - 2
		if f == 0:
			print('No')
		else:
			print('Yes')


import os
import sys
from io import BytesIO, IOBase

def readvars():
	k = map(int, input().split())
	return k

def readlist():
	li = list(map(int, input().split()))
	return li

def anslist(li):
	ans = ' '.join([str(v) for v in li])
	return ans

def main():
	t = 1
	t = int(input())
	for xx in range(t):
		(n, x) = readvars()
		a = readlist()
		odd = 0
		even = 0
		for i in a:
			if i % 2 == 1:
				odd += 1
			else:
				even += 1
		k = max(x - even, 0)
		if k % 2 == 1:
			print('Yes')
		elif odd < k + 1:
			print('No')
		elif even > 0:
			print('Yes')
		else:
			print('No')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


num = int(input())
for _ in range(num):
	(n, x) = map(int, input().split())
	a = list(map(int, input().strip().split()))[:n]
	odds = sum((i % 2 for i in a))
	if odds == 0:
		print('no')
	elif x - min(odds + odds % 2 - 1, x + x % 2 - 1) <= n - odds:
		print('yes')
	else:
		print('no')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	num = list(map(int, input().split()))
	even = odd = 0
	for v in num:
		if v % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	for val in range(1, min(odd, x) + 1, 2):
		if x - val <= even:
			flag = 1
			break
	if flag:
		print('Yes')
	else:
		print('No')


cases = int(input())

def can_make_an_odd_number(k, evens, odds):
	for m in range(1, (odds + 1) // 2 + 1):
		_2n = -2 * m + (k + 1)
		if _2n >= 0 and _2n <= evens:
			print('Yes')
			return
	print('No')
for i in range(cases):
	(size, k) = list(map(int, input().split()))
	nums = list(map(int, input().split()))
	(evens, odds) = (0, 0)
	for n in nums:
		if n % 2 == 0:
			evens += 1
		else:
			odds += 1
	can_make_an_odd_number(k, evens, odds)


t = int(input())
for _ in range(t):
	(n, m) = map(int, input().split())
	a = [int(s) for s in input().split()]
	c = 0
	for i in a:
		if i % 2 == 1:
			c += 1
	if c == 0:
		print('No')
	elif m % 2 == 0 and c == n:
		print('No')
	elif m == n and c % 2 == 0:
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline

def main():
	t = int(input())
	for _ in range(t):
		(N, X) = [int(x) for x in input().split()]
		A = [int(x) for x in input().split()]
		odd = 0
		even = 0
		for a in A:
			if a % 2 == 1:
				odd += 1
			else:
				even += 1
		if odd == 0:
			print('No')
		else:
			odd -= 1
			X -= 1
			if even >= X:
				print('Yes')
				continue
			f = False
			while odd >= 2 and X >= 2:
				odd -= 2
				X -= 2
				if even >= X:
					f = True
					break
			if even >= X:
				f = True
			if f:
				print('Yes')
			else:
				print('No')
main()


T = int(input())
for _ in range(T):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = sum([i % 2 for i in arr])
	even = n - odd
	if odd == 0:
		print('No')
		continue
	if odd % 2 == 0 and x == n:
		print('No')
		continue
	if even == 0 and x % 2 == 0:
		print('No')
		continue
	print('Yes')


from collections import defaultdict
itl = lambda : list(map(int, input().strip().split()))

def solve():
	(n, x) = itl()
	arr = itl()
	odd = 0
	eve = 0
	for i in range(n):
		if arr[i] % 2:
			odd += 1
		else:
			eve += 1
	if x == n:
		return bool(odd % 2)
	elif x % 2 == 0:
		return eve > 0 and odd > 0
	else:
		return odd > 0
T = int(input())
for _ in range(T):
	if solve():
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = [int(x) for x in input().split()]
	l = list(map(int, input().split()))
	y = 0
	if x > n:
		print('NO')
	if x == n:
		if sum(l) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		for i in range(n):
			if l[i] % 2 != 0:
				y += 1
		if y == 0:
			print('NO')
		elif y % 2 != 0 and y <= x:
			print('YES')
		elif y % 2 == 0 and y <= x - 1:
			print('YES')
		elif y >= x and x % 2 != 0:
			print('YES')
		elif y >= x and x % 2 == 0:
			if n - y >= 1:
				print('YES')
			else:
				print('NO')
		else:
			print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	evens = len(list(filter(lambda x: x % 2 == 0, map(int, input().split()))))
	odds = n - evens
	if odds == 0:
		print('No')
		continue
	if evens == 0:
		print('Yes' if x % 2 == 1 else 'No')
		continue
	if odds % 2 == 0:
		odds -= 1
	print('Yes' if x <= odds + evens else 'No')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	(ne, no) = (0, 0)
	for i in A:
		if i % 2 == 0:
			ne = ne + 1
		else:
			no = no + 1
	if no == 0:
		print('No')
	elif ne == 0 and x % 2 == 0:
		print('No')
	elif x == n and no % 2 == 0:
		print('No')
	else:
		print('Yes')


x = int(input())
for i in range(x):
	vetor = list(map(int, input().split()))
	n = vetor[0]
	k = vetor[1]
	lista = list(map(int, input().split()))
	p = 0
	ip = 0
	for j in lista:
		if j % 2 == 1:
			ip += 1
		else:
			p += 1
	if p == n or (p == 0 and k % 2 == 0):
		print('No')
	elif ip > 0:
		if ip % 2 == 0:
			ip -= 1
		if ip + p >= k:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


import sys
input = sys.stdin.readline
from collections import *
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(e, o) = (0, 0)
	for ai in a:
		if ai % 2 == 0:
			e += 1
		else:
			o += 1
	flag = False
	for i in range(1, o + 1, 2):
		if i <= x and x - i <= e:
			flag = True
	if flag:
		print('Yes')
	else:
		print('No')


def main():
	t = int(input())
	for __ in range(t):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		even_count = 0
		odd_count = 0
		for i in a:
			if i % 2:
				odd_count += 1
			else:
				even_count += 1
		poss = False
		for i in range(1, min(x, odd_count) + 1, 2):
			if even_count >= x - i:
				poss = True
				break
		if poss:
			print('YES')
		else:
			print('NO')
main()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = [int(j) for j in input().split()]
	eve = 0
	odd = 0
	for k in arr:
		if k % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == n and x % 2 == 0:
		print('NO')
		continue
	elif odd == n and x % 2 != 0:
		print('YES')
		continue
	if eve >= x - 1:
		x = 1
	else:
		x -= eve
		if x % 2 == 0:
			x += 1
	if odd >= x:
		print('Yes')
	else:
		print('No')


for w in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	count = 0
	if x == 1 and n == 1 and (a[0] % 2 == 0):
		print('No')
		continue
	if x == 1 and n == 1 and (a[0] % 2 != 0):
		print('Yes')
		continue
	if x == n and sum(a) % 2 != 0:
		print('Yes')
		continue
	if x == n and sum(a) % 2 == 0:
		print('No')
		continue
	for s in a:
		if s % 2 != 0:
			count += 1
	if count > 0:
		if x % 2 == 0:
			if count < n:
				print('Yes')
				continue
			else:
				print('No')
				continue
		else:
			print('Yes')
			continue
	else:
		print('No')
		continue


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(ne, no) = (0, 0)
	for ai in a:
		if ai % 2 == 0:
			ne += 1
		else:
			no += 1
	if no == 0:
		print('No')
	elif x % 2 == 0 and ne == 0:
		print('No')
	elif x == n and no % 2 == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for test in range(t):
	(n, x) = input().split()
	(n, x) = (int(n), int(x))
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for elem in l:
		if elem % 2 != 0:
			odd += 1
	even = n - odd
	if odd == 0:
		print('No')
		continue
	flag = False
	temp = min(x, odd)
	for i in range(1, temp + 1, 2):
		if even >= x - i:
			flag = True
			break
	if flag:
		print('Yes')
	else:
		print('No')


numberofcases = int(input())
for _ in range(numberofcases):
	(n, x) = [int(t) for t in input().split()]
	l = [int(t) for t in input().split()]
	oddcount = 0
	for item in l:
		if item % 2 == 1:
			oddcount += 1
		evencount = n - oddcount
	if oddcount == 0:
		print('No')
	elif oddcount % 2 == 0 and x == n:
		print('No')
	elif evencount == 0 and x % 2 == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	CHET = 0
	NECHET = 0
	for i in range(n):
		if a[i] % 2 == 0:
			CHET += 1
		else:
			NECHET += 1
	if NECHET >= x:
		if x % 2 == 1:
			print('Yes')
		elif CHET != 0:
			print('Yes')
		else:
			print('No')
	elif NECHET != 0:
		if NECHET % 2 == 1:
			print('Yes')
		elif CHET >= x + 1 - NECHET:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


import math
from collections import defaultdict, Counter, deque
INF = float('inf')

def gcd(a, b):
	while b:
		(a, b) = (b, a % b)
	return a

def primeFactor(n):
	if n % 2 == 0:
		return 2
	i = 3
	while i ** 2 <= n:
		if n % i == 0:
			return i
		i += 1
	return n

def main():
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	count_odd = 0
	count_even = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			count_even += 1
		else:
			count_odd += 1
	if count_odd == 0:
		print('No')
	elif count_even == 0 and x % 2 == 0:
		print('No')
	elif count_odd % 2 == 0 and count_odd - 1 + count_even >= x:
		print('Yes')
	elif count_odd % 2 == 1 and count_odd + count_even >= x:
		print('Yes')
	else:
		print('No')
t = int(input())
for _ in range(t):
	main()


t = int(input())
for i in range(t):
	i = p = 0
	(n, x) = (int(e) for e in input().split(' '))
	l = (int(e) for e in input().split(' '))
	for k in l:
		if k % 2 != 0:
			i += 1
	p = n - i
	if i == 0:
		print('No')
	else:
		r = min(x, i)
		if r % 2 == 0:
			r -= 1
		if x - r <= p:
			print('Yes')
		elif (x - min(x, p)) % 2 == 0:
			print('No')
		else:
			print('Yes')


t = int(input())

def countPar(arr):
	return [el % 2 for el in arr]
for tt in range(0, t):
	(n, x) = [int(el) for el in input().split(' ')]
	arr = [int(el) for el in input().split(' ')]
	parCount = countPar(arr)
	oddCount = parCount.count(1)
	evenCount = parCount.count(0)
	if oddCount != 0:
		if oddCount % 2 == 0:
			oddCount -= 1
		if x % 2 == 1:
			if oddCount + evenCount >= x:
				print('YES')
			else:
				print('NO')
		elif evenCount != 0:
			if oddCount + evenCount >= x:
				print('YES')
			else:
				print('NO')
		else:
			print('NO')
	else:
		print('NO')


from collections import *
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = [*map(int, input().split())]
	for i in range(n):
		l[i] = l[i] % 2
	dic = Counter(l)
	odd = dic.get(1, 0)
	even = dic.get(0, 0)
	if x % 2 == 1:
		if odd == 0:
			print('No')
		else:
			x -= 1
			odd -= 1
			if even >= x:
				print('Yes')
			else:
				if even % 2 == 1:
					even -= 1
				x -= even
				if x <= odd:
					print('Yes')
				else:
					print('No')
	elif odd == 0 or even == 0:
		print('No')
	else:
		odd -= 1
		even -= 1
		x -= 2
		if x <= even:
			print('Yes')
		else:
			if even % 2 == 1:
				even -= 1
			x -= even
			if x <= odd:
				print('Yes')
			else:
				print('No')


def oddsum(n, x, array):
	B = ['No', 'Yes']
	odd = sum((x % 2 for x in array))
	if odd == 0:
		return B[0]
	if odd == n:
		return B[x % 2]
	if x == n:
		return B[odd % 2]
	return B[1]
t = int(input())
for i in range(t):
	(n, x) = [int(s) for s in input().split()]
	array = [int(s) for s in input().split()]
	print(oddsum(n, x, array))


t = int(input())
for _ in range(t):
	num = 0
	(n, x) = map(int, input().split(' '))
	a = list(map(int, input().split(' ')))
	count = 0
	if n == x:
		num = sum(a)
		if num % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		for h in a:
			if h % 2 == 0:
				count += 1
		if count == len(a):
			print('No')
		elif count == 0:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		else:
			print('Yes')


import sys
import math

def II():
	return int(sys.stdin.readline())

def LI():
	return list(map(int, sys.stdin.readline().split()))

def MI():
	return map(int, sys.stdin.readline().split())

def SI():
	return sys.stdin.readline().strip()
t = II()
for q in range(t):
	(n, x) = MI()
	a = LI()
	c = 0
	c2 = 0
	for i in a:
		if i % 2 == 0:
			c2 += 1
		else:
			c += 1
	if c2 == 0 and x % 2 == 0 or c == 0:
		print('NO')
	else:
		if c % 2 == 0:
			c -= 1
		if c + c2 >= x:
			print('YES')
		else:
			print('NO')


from sys import stdin, stdout
from math import *
from heapq import *
from collections import *

def main():
	ntest = int(stdin.readline())
	for testcase in range(ntest):
		(n, x) = [int(x) for x in stdin.readline().split()]
		a = [int(z) for z in stdin.readline().split()]
		odd = 0
		even = 0
		for z in a:
			if z % 2 == 0:
				even += 1
			else:
				odd += 1
		succ = False
		for o in range(1, odd + 1):
			if o > odd:
				break
			e = x - o
			if (o <= odd and o % 2 == 1 and (o <= x)) and (e <= x and e >= 0 and (e <= even)):
				succ = True
				break
		if succ:
			stdout.write('Yes\n')
		else:
			stdout.write('No\n')
	return 0
main()


t = int(input())
while t:
	t -= 1
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for e in a:
		if e % 2:
			odd += 1
		else:
			even += 1
	if x is n:
		if sum(a) % 2:
			print('YES')
		else:
			print('NO')
	elif odd is 0:
		print('NO')
	elif even is 0:
		if x % 2:
			print('YES')
		else:
			print('NO')
	else:
		print('YES')


import sys
strInp = lambda : input().strip().split()
intInp = lambda : list(map(int, strInp()))
for t in range(int(input())):
	(n, x) = intInp()
	arr = intInp()
	ne = 0
	for i in arr:
		if i % 2 == 0:
			ne += 1
	no = n - ne
	if no == 0 or (x % 2 == 0 and ne == 0):
		print('No')
	else:
		if x % 2 == 0:
			if ne % 2 == 0:
				ne -= 1
		elif ne % 2 != 0:
			ne -= 1
		if ne + no >= x:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	l = [i % 2 for i in l]
	c = l.count(1)
	if c == 0 or (a == b and c % 2 == 0) or (a == c and b % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, m) = [int(n) for n in input().split()]
	arr = list(map(int, input().strip().split()))
	count1 = 0
	count2 = 0
	for j in arr:
		if j % 2 == 0:
			count1 = count1 + 1
		else:
			count2 = count2 + 1
	if count1 == n:
		print('No')
	elif count2 == n:
		if m % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif count1 < n and count2 % 2 != 0:
		print('Yes')
	elif count1 < n and count2 % 2 == 0:
		count2 = count2 - 1
		if m - count2 <= count1:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	li = list(map(int, input().split()))
	s = sum(li)
	if n == x:
		if s % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	else:
		odd = 0
		even = 0
		for a in li:
			if a % 2 == 1:
				odd += 1
			else:
				even += 1
		f = False
		if x % 2 == 1:
			for i in range(1, x + 1, 2):
				if odd >= i and even >= x - i:
					print('Yes')
					f = True
					break
			if f == False:
				print('No')
		else:
			for i in range(1, x, 2):
				if odd >= i and even >= x - i:
					print('Yes')
					f = True
					break
			if f == False:
				print('No')


p = ''
for i in range(int(input())):
	(n, h) = map(int, input().split())
	x = list(map(int, input().split()))
	k = 0
	(odd, even) = ([], [])
	for j in x:
		if j % 2 == 0:
			even.append(j)
		else:
			odd.append(j)
	if h <= len(odd) and h % 2 == 1:
		p += 'Yes\n'
	else:
		for g in range(1, len(odd) + 1):
			for u in range(1, len(even) + 1):
				if g + u == h and g % 2 == 1:
					p += 'Yes\n'
					k = 1
					break
			if k == 1:
				break
		if k == 0:
			p += 'No\n'
print(p[:-1])


t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	l = [int(i) for i in input().split()]
	even = 0
	odd = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if x == n:
		s = sum(l)
		if s % 2 != 0:
			print('YES')
		else:
			print('NO')
	else:
		e = x - 1
		o = 1
		if x % 2 != 0:
			while x >= o:
				if e <= even and o <= odd:
					print('YES')
					break
				else:
					e -= 2
					o += 2
			else:
				print('NO')
		else:
			while e > 0:
				if e <= even and o <= odd:
					print('YES')
					break
				else:
					e -= 2
					o += 2
			else:
				print('NO')


t = int(input())
n_counter = 0
result = []
for i in range(0, t):
	n_counter = 0
	(n, x) = (int(x) for x in input().split())
	arr = [int(x) for x in input().split()]
	for j in range(0, n):
		if arr[j] % 2 == 1:
			n_counter += 1
	if n_counter == 0 or (n_counter % 2 == 0 and n == x) or (n_counter == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')
for i in result:
	print(i)


t = int(input(''))
while t > 0:
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	flag = -1
	odd_count = 0
	for i in range(n):
		if l[i] % 2 == 1:
			odd_count += 1
	even_count = n - odd_count
	if odd_count < 1:
		flag = -1
	elif even_count >= x - 1:
		flag = 1
	else:
		odd_count -= 1
		z = odd_count // 2 * 2
		if z + 1 > x:
			z = (x - 1) // 2 * 2
		if x - 1 - z <= even_count:
			flag = 1
		else:
			flag = -1
	if flag == 1:
		print('Yes')
	elif flag == -1:
		print('No')
	t -= 1


import sys
readline = sys.stdin.readline
T = int(readline())
Ans = ['No'] * T
for qu in range(T):
	(N, X) = map(int, readline().split())
	A = [int(a) % 2 for a in readline().split()]
	zero = A.count(0)
	one = N - zero
	if one == 0:
		continue
	if zero == 0:
		if X & 1:
			Ans[qu] = 'Yes'
		continue
	if 1 <= X <= 1 + (one - 1) // 2 * 2 + zero:
		Ans[qu] = 'Yes'
print('\n'.join(Ans))


test = int(input())
for i in range(test):
	(n, x) = input().split()
	cnt_i = 0
	cnt_p = 0
	n = int(n)
	x = int(x)
	number = []
	number = input().split()
	number = list(map(int, number))
	for j in range(n):
		if number[j] % 2 == 1:
			cnt_i = cnt_i + 1
		else:
			cnt_p = cnt_p + 1
	if x % 2 == 0 and cnt_p == 0:
		print('NO')
		continue
	if cnt_i % 2 == 0:
		cnt_i = cnt_i - 1
	if cnt_i >= x:
		print('YES')
		continue
	if cnt_i <= 0:
		print('NO')
		continue
	if x - cnt_p <= cnt_i:
		print('YES')
	else:
		print('NO')


import sys
input = sys.stdin.readline
t = int(input())
while t != 0:
	t -= 1
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
		continue
	if e == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	o -= 1
	e -= 1
	x -= 1
	if o + e >= x:
		print('Yes')
	elif sum(l) % 2 == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	C = [0, 0]
	for i in l:
		C[i % 2] += 1
	x -= 1
	if C[0] == n:
		print('No')
	else:
		C[1] -= 1
		x -= min(2 * (x // 2), C[1] - C[1] % 2)
		x -= min(x, C[0])
		print('Yes' if x == 0 else 'No')


t = int(input())
for q in range(t):
	(n, x) = map(int, input().split())
	mas = list(map(int, input().split()))
	a = 0
	b = 0
	for i in mas:
		if i % 2 == 0:
			a += 1
		else:
			b += 1
	if b == 0:
		print('NO')
	else:
		b -= 1
		x -= 1
		c = b // 2
		z = x // 2
		x -= min(c, z) * 2
		if x <= a:
			print('YES')
		else:
			print('NO')


T = int(input())
for _ in range(T):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(p, q) = (0, 0)
	for i in a:
		if i % 2 == 0:
			p += 1
		else:
			q += 1
	ok = False
	for i in range(p + 1):
		j = x - i
		if j < 0 or j > q:
			continue
		if j % 2 == 1:
			ok = True
			break
	if ok:
		print('Yes')
	else:
		print('No')


def numOfOddElements(arr):
	ans = 0
	for e in arr:
		if e % 2 != 0:
			ans += 1
	return ans

def findOddNumberClosestToButNotExceeding(a, b):
	if a >= b:
		if b % 2 == 0:
			return b - 1
		return b
	if a % 2 == 0:
		return a - 1
	return a
t = int(input())
for ti in range(t):
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	numOdd = numOfOddElements(a)
	numEven = n - numOdd
	if numOdd == 0:
		print('No')
	else:
		numOddChosen = findOddNumberClosestToButNotExceeding(x, numOdd)
		numEvenNeeded = x - numOddChosen
		if numEvenNeeded <= numEven:
			print('Yes')
		else:
			print('No')


def test_solve(n, x, a):
	odd = 0
	for i in a:
		if i % 2 == 1:
			odd += 1
	if odd == 0 or (odd == n and x % 2 == 0) or (x == n and sum(a) % 2 == 0):
		return 'No'
	return 'Yes'
t = int(input())
for t in range(1, t + 1):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print(test_solve(n, x, a))


import math
q = int(input())
while q:
	q -= 1
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for w in l:
		if w % 2 == 0:
			even += 1
		else:
			odd += 1
	if x > odd + even:
		print('No')
	elif x == odd + even:
		if x % 2 == 0:
			if odd % 2 != 0 and even % 2 != 0:
				print('Yes')
			else:
				print('No')
		elif x % 2 != 0:
			if odd % 2 != 0 and even % 2 == 0:
				print('Yes')
			else:
				print('No')
	elif x % 2 == 0:
		if odd >= 1 and even >= 1:
			print('Yes')
		else:
			print('No')
	elif odd >= 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for k in range(t):
	(n, x) = map(int, input().split())
	count1 = 0
	count2 = 0
	a = list(map(int, input().split()))[:n]
	if x == n:
		if sum(a) % 2 != 0:
			print('Yes')
		else:
			print('No')
		continue
	for i in range(n):
		if a[i] % 2 == 0:
			count1 += 1
		else:
			count2 += 1
	if count2 == 0:
		print('No')
		continue
	if count1 == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	print('Yes')


t = int(input())
for idt in range(0, t):
	nx = input()
	nx = nx.split()
	n = int(nx[0])
	x = int(nx[1])
	an = input()
	an = an.split()
	ani = [int(ia) for ia in an]
	aeven = [ia for ia in ani if ia % 2 == 0]
	aodd = [ia for ia in ani if ia % 2 == 1]
	ix = x
	iy = 0
	while ix > 0:
		if ix % 2 == 1:
			if len(aodd) >= ix and len(aeven) >= iy:
				print('Yes')
				break
		elif len(aodd) >= ix - 1 and len(aeven) >= iy + 1:
			print('Yes')
			break
		ix -= 1
		iy += 1
	if ix == 0:
		print('No')


t = int(input())
while t > 0:
	(n, x) = map(int, input().split())
	lis = map(int, input().split())
	count = 0
	for i in lis:
		if i % 2 != 0:
			count += 1
	if count % 2 == 0 and n == x or count == 0 or (x % 2 == 0 and count == n):
		print('No')
	else:
		print('Yes')
	t -= 1


import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(item) for item in input().split()]
	odd = 0
	even = 0
	for item in a:
		if item % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if x % 2 == 0 and (odd == 0 or even == 0):
		print('No')
		continue
	if n == x and odd % 2 == 0:
		print('No')
		continue
	print('Yes')


for i in range(0, int(input())):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	pe = 0
	po = 0
	for j in a:
		if j % 2 == 0:
			pe = pe + 1
		else:
			po = po + 1
	if x % 2 == 0:
		m = x - 1
		while m > po:
			m = m - 2
		if m >= 0:
			q = x - m
			if q <= pe:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
	elif x % 2 != 0:
		m = x - 1
		while m > pe:
			m = m - 2
		if m >= 0:
			q = x - m
			if q <= po:
				print('Yes')
			else:
				print('No')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, m) = map(int, input().split())
	a = list(map(int, input().split()))
	ct = 0
	ev = 0
	for i in range(n):
		if a[i] % 2 != 0:
			ct += 1
		if a[i] % 2 == 0:
			ev += 1
	if m % 2 == 0:
		if ct % 2 != 0 and ev > 0:
			print('Yes')
		elif ct != 0 and ct % 2 == 0 and (ct - 1 + ev >= m) and (ev > 0):
			print('Yes')
		else:
			print('No')
	elif ct % 2 != 0 and (ev > 0 or ct >= m):
		print('Yes')
	elif ct != 0 and ct % 2 == 0 and (ct - 1 + ev >= m):
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	E = []
	O = []
	for i in A:
		if i % 2 == 0:
			E.append(i)
		else:
			O.append(i)
	x -= min(x - 1, len(E))
	if x > len(O):
		print('NO')
	elif x % 2 != 0 and len(O) >= x:
		print('YES')
	elif len(O) >= x + 1 and len(E) >= 1:
		print('YES')
	else:
		print('NO')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	p = 0
	for i in range(n):
		if a[i] % 2 == 0:
			p = p + 1
	q = n - p
	if x % 2 == 1:
		if q >= 1 and p // 2 + (q - 1) // 2 >= (x - 1) // 2:
			print('YES')
		else:
			print('NO')
	elif q >= 1 and p >= 1 and ((q - 1) // 2 + (p - 1) // 2 >= (x - 2) // 2):
		print('YES')
	else:
		print('NO')


import sys
buff_readline = sys.stdin.readline
readline = sys.stdin.readline
INF = 2 ** 62 - 1

def read_int():
	return int(buff_readline())

def read_int_n():
	return list(map(int, buff_readline().split()))

def read_float():
	return float(buff_readline())

def read_float_n():
	return list(map(float, buff_readline().split()))

def read_str():
	return readline().strip()

def read_str_n():
	return readline().strip().split()

def error_print(*args):
	print(*args, file=sys.stderr)

def mt(f):
	import time

	def wrap(*args, **kwargs):
		s = time.time()
		ret = f(*args, **kwargs)
		e = time.time()
		error_print(e - s, 'sec')
		return ret
	return wrap

def slv(N, X, A):
	c = {0: 0, 1: 0}
	for a in A:
		c[a % 2] += 1
	if c[1] == 0:
		return 'No'
	if c[1] % 2 == 0:
		c[1] -= 1
	if X % 2 == 0:
		if c[0] == 0:
			return 'No'
		else:
			X -= 1
			c[0] -= 1
	return 'Yes' if c[0] + c[1] >= X else 'No'

def main():
	T = read_int()
	for _ in range(T):
		(N, X) = read_int_n()
		A = read_int_n()
		print(slv(N, X, A))
main()


import os
import sys
import math
from collections import defaultdict
from io import BytesIO, IOBase

def power(x, n, m):
	x %= m
	res = 1
	while n != 0:
		if n & 1 == 1:
			res = res * x % m
		x = x * x % m
		n >>= 1
	return res

def mode(arr):
	value_counts = defaultdict(int)
	for item in arr:
		value_counts[item] = value_counts[item] + 1
	return value_counts

def main():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		o = 0
		e = 0
		for i in range(n):
			if a[i] % 2 == 0:
				e += 1
			else:
				o += 1
		if o == 0:
			print('No')
		elif o == 1:
			print('Yes')
		elif x == o + e:
			if o % 2 != 0:
				print('Yes')
			else:
				print('No')
		else:
			o -= 1
			z = x - 1
			if e >= z:
				print('Yes')
			elif e == 0:
				if z % 2 == 0:
					print('Yes')
				else:
					print('No')
			elif o == 1:
				print('No')
			else:
				print('Yes')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	assert len(arr) == n
	num_odd = len([a for a in arr if a % 2 == 1])
	num_even = len([a for a in arr if a % 2 == 0])
	for i in range(num_odd + 1):
		if i % 2 == 1 and 0 <= x - i <= num_even:
			print('Yes')
			break
	else:
		print('No')


num = int(input())
for i in range(num):
	(n, x) = [int(h) for h in input().split()]
	ip = [int(k) for k in input().split()]
	total = 0
	even_count = 0
	for a in ip:
		total = total + a
		if a % 2 == 0:
			even_count += 1
	if n == x:
		if total % 2 == 0:
			print('No')
			continue
		if total % 2 == 1:
			print('Yes')
			continue
	for b in range(1, x + 1, 2):
		if even_count >= x - b and n - even_count >= b:
			print('Yes')
			break
	else:
		print('No')


ipnl = lambda n: [int(input()) for _ in range(n)]
inp = lambda : int(input())
ip = lambda : [int(w) for w in input().split()]
for _ in range(inp()):
	(n, k) = ip()
	x = ip()
	(o, e) = (0, 0)
	for i in x:
		if i % 2:
			o += 1
	if o == 0:
		print('No')
		continue
	e = n - o
	if o == k:
		if o % 2:
			print('Yes')
		elif o % 2 == 0 and e >= 1:
			print('Yes')
		else:
			print('No')
	elif o < k:
		if o % 2 and k - o <= e:
			print('Yes')
		elif o % 2 == 0 and k - o + 1 <= e:
			print('Yes')
		else:
			print('No')
	elif k % 2:
		print('Yes')
	elif e >= 1:
		print('Yes')
	else:
		print('No')


t = int(input())
b = list()
c = list()
re = list()
for i in range(t):
	b = list(map(int, input().split()))
	c = list(map(int, input().split()))
	e = o = 0
	for i in c:
		if i % 2 == 0:
			e += 1
		elif i % 2 == 1:
			o += 1
	if o == 0:
		re.append('No')
	elif b[1] <= o:
		if b[1] % 2 == 1:
			re.append('Yes')
		elif b[1] % 2 == 0 and e > 0:
			re.append('Yes')
		else:
			re.append('No')
	elif b[1] > o:
		if o % 2 == 0:
			if b[1] <= o - 1 + e:
				re.append('Yes')
			else:
				re.append('No')
		elif o % 2 == 1:
			if b[1] <= o + e:
				re.append('Yes')
			else:
				re.append('No')
for i in re:
	print(i)


t = int(input())
for i in range(t):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if arr[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	if k > n or odd == 0:
		ans = 'No'
	else:
		odd -= 1
		k -= 1
		if k % 2 == 0:
			if odd >= k:
				ans = 'Yes'
			elif odd % 2 == 0:
				if even >= k - odd:
					ans = 'Yes'
				else:
					ans = 'No'
			elif even >= k - (odd - 1):
				ans = 'Yes'
			else:
				ans = 'No'
		elif odd >= k:
			if even >= 1:
				ans = 'Yes'
			else:
				ans = 'No'
		elif odd % 2 == 0:
			if even >= k - odd:
				ans = 'Yes'
			else:
				ans = 'No'
		elif even >= k - (odd - 1):
			ans = 'Yes'
		else:
			ans = 'No'
	print(ans)


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	(s, k) = (input().split(), 0)
	for i in s:
		if int(i) % 2 == 0:
			k = k + 1
	if k > 0 and n - k > 0 and (x != n or (n - k) % 2 != 0):
		print('Yes')
	elif k == 0 and x % 2 == 1:
		print('Yes')
	else:
		print('No')


for _ in ' ' * int(input()):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	cnt = len([i for i in a if i % 2 != 0])
	if cnt == 0:
		print('No')
	elif cnt == n:
		print('Yes' if x % 2 else 'No')
	else:
		print('Yes' if x != n else 'Yes' if sum(a) % 2 else 'No')


def solve():
	odd = 0
	even = 0
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	mineven = min(odd, x)
	if mineven % 2 == 0:
		if even >= x - mineven + 1 and odd > 0:
			return 'YES'
		else:
			return 'NO'
	elif even >= x - mineven:
		return 'YES'
	else:
		return 'NO'
testcases = int(input())
for i in range(testcases):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	print(solve())


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	ai = list(map(int, input().split()))
	ai2 = [ai[i] % 2 for i in range(n)]
	num = sum(ai2)
	num2 = n - num
	ans = ['No', 'Yes']
	if x == n:
		ans = ans[num % 2]
	elif num2 == 0:
		ans = ans[x % 2]
	elif num == 0:
		ans = ans[0]
	else:
		ans = ans[1]
	print(ans)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for nm in arr:
		if nm % 2 == 1:
			odd += 1
		else:
			even += 1
	fl = False
	for i in range(1, min(x + 1, odd + 1), 2):
		if x - i <= even:
			fl = True
			break
	if fl:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	f = [0, 0]
	(n, x) = map(int, input().split())
	arr = [int(num) for num in input().split()]
	for num in arr:
		f[num % 2] = f[num % 2] + 1
	flag = 0
	i = 1
	while i <= f[1] and i <= x:
		have = f[0]
		need = x - i
		if need <= f[0]:
			flag = 1
		i = i + 2
	if flag:
		print('Yes')
	else:
		print('No')


import sys
import math
from collections import defaultdict, deque
import heapq
t = int(sys.stdin.readline())
for _ in range(t):
	(n, x) = map(int, sys.stdin.readline().split())
	arr = list(map(int, sys.stdin.readline().split()))
	even = 0
	odd = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	x -= 1
	odd -= 1
	cnt = 0
	while cnt < x and odd > 1:
		if cnt + 2 > x:
			break
		cnt += 2
		odd -= 2
	if cnt == x:
		print('Yes')
		continue
	rem = x - cnt
	if even >= rem:
		print('Yes')
		continue
	print('No')


from math import *
from collections import *
from operator import itemgetter
import bisect
from heapq import *
i = lambda : input()
ii = lambda : int(input())
iia = lambda : list(map(int, input().split()))
isa = lambda : list(input().split())
I = lambda : list(map(int, input().split()))
chrIdx = lambda x: ord(x) - 96
idxChr = lambda x: chr(96 + x)
t = ii()
for _ in range(t):
	(n, d) = iia()
	a = iia()
	o = 0
	e = 0
	flag = 'Yes'
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	x = d - e
	if o == 0:
		flag = 'No'
	if e == 0 and d % 2 == 0 or (d - e == o and o % 2 == 0):
		flag = 'No'
	print(flag)


t = int(input())
for i in range(0, t):
	(n, m) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(0, n):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	for i in range(0, m + 1):
		if m != 1:
			even1 = i
			odd1 = m - i
			if odd1 % 2 != 0:
				if even1 <= even and odd1 <= odd:
					flag = 1
					break
		elif odd > 0:
			flag = 1
	if flag == 1:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	if x == 1:
		f = 0
		for i in l:
			if i % 2 != 0:
				print('Yes')
				f = 1
				break
		if f == 0:
			print('No')
	else:
		c1 = 0
		c2 = 0
		for i in l:
			if i % 2 == 0:
				c1 += 1
			else:
				c2 += 1
		if c2 % 2 == 0 and x == n or c2 == 0 or (c1 == 0 and x % 2 == 0):
			print('No')
		else:
			print('Yes')


def possible(oc, ec, i):
	for j in range(ec, -1, -1):
		for x in range(noc, 0, -2):
			if i == j + x:
				return 'Yes'
	return 'No'
for _ in range(int(input())):
	(tot, i) = map(int, input().split())
	xs = list(map(int, input().split()))
	oc = len(list(filter(lambda x: x % 2 == 1, xs)))
	noc = oc if oc % 2 == 1 else oc - 1
	noc = 0 if noc == -1 else noc
	ec = tot - oc
	print(possible(oc, ec, i))


from collections import Counter, defaultdict, deque
from math import *
import sys
input = sys.stdin.readline

def solve():
	(n, x) = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	odd = 0
	for el in arr:
		if el & 1:
			odd += 1
	if odd == 0 or (n == x and odd % 2 == 0) or (odd == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')
tt = int(input())
for test in range(tt):
	solve()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	(odd, even) = (0, 0)
	for a in input().split():
		if int(a) % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	x -= 1
	odd -= 1
	if odd % 2 == 1:
		odd -= 1
	x -= min(x // 2, odd // 2) * 2
	if x <= even:
		print('Yes')
	else:
		print('No')


def sumodd(arr, n, x):
	i = 0
	odd = 0
	even = 0
	while i < n:
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
		i += 1
	for i in range(min(odd, x) + 1):
		if i % 2 == 1 and even >= x - i:
			return 'Yes'
	else:
		return 'No'
t = int(input())
for _ in range(t):
	(n, x) = tuple(map(int, input().split()))
	arr = list(map(int, input().split()))
	print(sumodd(arr, n, x))


import bisect
import os
from collections import Counter
import bisect
from collections import defaultdict
import math
import random
import heapq as hq
from math import sqrt
import sys
from functools import reduce, cmp_to_key
from collections import deque
import threading
from itertools import combinations
from io import BytesIO, IOBase
from itertools import accumulate

def primeFactors(n):
	prime = set()
	while n % 2 == 0:
		prime.add(2)
		n = n // 2
	for i in range(3, int(math.sqrt(n)) + 1, 2):
		while n % i == 0:
			prime.add(i)
			n = n // i
	if n > 2:
		prime.add(n)
	return list(prime)

def getFactors(n):
	factors = []
	i = 1
	while i <= math.sqrt(n):
		if n % i == 0:
			if n // i == i:
				factors.append(i)
			else:
				factors.append(i)
				factors.append(n // i)
		i = i + 1
	return factors

def SieveOfEratosthenes(n):
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	num = []
	for p in range(2, n + 1):
		if prime[p]:
			num.append(p)
	return num

def lcm(a, b):
	return a * b // math.gcd(a, b)

def sort_dict(key_value):
	return sorted(key_value.items(), key=lambda kv: (kv[1], kv[0]))

def list_input():
	return list(map(int, input().split()))

def num_input():
	return map(int, input().split())

def string_list():
	return list(input())

def decimalToBinary(n):
	return bin(n).replace('0b', '')

def binaryToDecimal(n):
	return int(n, 2)

def solve():
	(n, x) = num_input()
	arr = list_input()
	even = odd = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
		return
	if x % 2 == 0 and even == 0:
		print('NO')
		return
	if x % 2 != 0 and odd >= x:
		print('YES')
		return
	if odd % 2 != 0:
		print('YES')
	elif odd + even - 1 >= x:
		print('YES')
	else:
		print('NO')
t = int(input())
for _ in range(t):
	solve()


t = int(input())
for i in range(t):
	X = input()
	x1 = X.split()
	n = int(x1[0])
	x = int(x1[1])
	B = input()
	A = B.split()
	for i in range(n):
		A[i] = int(A[i])
		A[i] = A[i] % 2
	I = 0
	for i in A:
		I = i + I
	P = n - I
	if I == 0:
		print('No')
	else:
		cond = False
		j = 1
		while 2 * j - 1 <= I:
			if 2 * j - 1 <= I and x - (2 * j - 1) <= P and (0 <= x - (2 * j - 1)):
				cond = True
				break
			j = j + 1
		if cond:
			print('Yes')
		else:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	arr = [int(j) for j in input().split()]
	o = 0
	e = 0
	for j in arr:
		if j % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
		continue
	x -= min(x - (x + 1) % 2, o - (o + 1) % 2)
	if x <= e:
		print('Yes')
	else:
		print('No')


t = int(input())
results = []
for case in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		odd += int(i % 2 == 1)
		even += int(i % 2 == 0)
	ans = 'No'
	if odd == n:
		if x % 2:
			ans = 'Yes'
	elif odd > 0 and even > 0:
		if x != n:
			ans = 'Yes'
		elif sum(a) % 2:
			ans = 'Yes'
	results.append(ans)
for result in results:
	print(result)


testing_mode = True
import sys, traceback
test_data = ''
final_output = ''

def input(input_format=0, multi=0):
	if multi > 0:
		return [input(input_format) for x in range(multi)]
	else:
		next_line = next(test_data, None).strip() if test_data else sys.stdin.readline()
		if input_format == 0:
			formatted_input = [next_line]
		elif input_format == 1:
			formatted_input = list(map(int, next_line.split()))
		elif input_format == 2:
			formatted_input = list(map(float, next_line.split()))
		elif input_format == 3:
			formatted_input = next_line.split()
		elif input_format == 4:
			formatted_input = (lambda x: [x[0], list(map(int, x[1:]))])(next_line.split())
		elif input_format == 5:
			formatted_input = (lambda x: [x[0], list(map(float, x[1:]))])(next_line.split())
		else:
			formatted_input = [next_line]
		return formatted_input

def log(*args):
	if testing_mode:
		print(*args)

def out(output_line, output_format=0, newline=True):
	global final_output
	formatted_output = ''
	if output_format == 0:
		formatted_output = str(output_line)
	elif output_format == 1:
		formatted_output = ' '.join(map(str, output_line))
	elif output_format == 1:
		formatted_output = '\n'.join(map(str, output_line))
	if testing_mode:
		final_output += formatted_output + '\n' * newline
	else:
		print(formatted_output, end='\n' if newline else '')
test_inputs = ['\n5\n1 1\n999\n1 1\n1000\n2 1\n51 50\n2 2\n51 50\n3 3\n101 102 103\n\n', '\n1\n4 2\n3 5 7 8\n', '\n1\n2 1\n3 5\n', '\n$$$\n']
test_outputs = ['\nYes\nNo\nYes\nYes\nNo\n\n', '\n$$$\n', '\n$$$\n', '\n$$$\n']

def q(x, e, o):
	if x < o:
		return x % 2 == 1 or e > 0
	elif o == 0:
		return False
	elif o % 2 == 0:
		return e + o > x
	else:
		return True

def solve():
	for z in range(input(1)[0]):
		(n, x) = input(1)
		k = input(1)
		e = 0
		o = 0
		for i in k:
			if i % 2 == 0:
				e += 1
			else:
				o += 1
		out('Yes' if q(x, e, o) else 'No')
	return

def run_all(overwrite_testing=False):
	global testing_mode, final_output, test_data
	testing_mode = overwrite_testing and testing_mode
	if testing_mode:
		tests_failed = 0
		for (test_number, (test_in, test_out)) in enumerate(zip(test_inputs, test_outputs)):
			final_output = ''
			if test_in.lstrip()[:3] == '$$$':
				continue
			test_data = iter([i for i in test_in.split('\n') if i])
			print(f'Test Case #{test_number + 1}:')
			print('<' * 20)
			fail = False
			verdict = '\x1b[92m\x1b[1mPASS\x1b[0m'
			try:
				solve()
				final = final_output.rstrip('\n')
				raw_out = iter(map(str, final.split('\n'))) if final else iter(())
			except Exception:
				raw_out = ''
				fail = True
				print('\x1b[95m')
				traceback.print_exc()
				print('\x1b[0m')
			if raw_out:
				if test_out.lstrip()[:3] == '$$$':
					verdict = '\x1b[94m\x1b[1mSKIP\x1b[0m'
					print('\x1b[94m' + '\n'.join(list(raw_out)) + '\x1b[0m')
				else:
					for line_out in [i for i in test_out.split('\n') if i]:
						line_raw = next(raw_out, '% None %')
						if line_raw == line_out.strip():
							print(f'\x1b[92m{line_raw}\x1b[0m')
						else:
							print(f'\x1b[91m{line_raw}\x1b[0m')
							fail = True
					line_raw = next(raw_out, None)
					while line_raw:
						print(f'\x1b[91m{line_raw}\x1b[0m')
						line_raw = next(raw_out, None)
						fail = True
			print('>' * 20)
			if fail:
				verdict = '\x1b[91m\x1b[1mFAIL\x1b[0m'
				tests_failed += 1
			print(verdict + '\n')
		if tests_failed:
			print(f"\x1b[91m\x1b[1m{tests_failed} TEST{('S' if tests_failed > 1 else '')} FAILED!\x1b[0m")
		else:
			print(f'\x1b[92m\x1b[1mALL TESTS PASSED!\x1b[0m')
	else:
		test_data = False
		solve()
run_all(False)


for i in range(int(input())):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	oddcnt = 0
	evecnt = 0
	for i in range(n):
		if l[i] % 2 == 0:
			evecnt += 1
		else:
			oddcnt += 1
	if evecnt >= k - 1 and oddcnt > 0:
		print('Yes')
	elif oddcnt > 0:
		oddcnt -= 1
		if oddcnt % 2 != 0:
			oddcnt -= 1
		tmp = 0
		t1 = 0
		while oddcnt:
			tmp += 2
			if k - 1 - tmp < 0:
				break
			if evecnt >= k - 1 - tmp:
				t1 = 1
				break
			oddcnt -= 2
		if t1:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	l.sort()
	e = []
	o = []
	flag = False
	if x == len(l) and sum(l) % 2 != 0:
		flag = True
	else:
		for j in range(n):
			if l[j] % 2 == 0:
				e.append(l[j])
			else:
				o.append(l[j])
		for k in range(1, x + 1, 2):
			if len(o) >= k and len(e) >= x - k:
				flag = True
				break
	if flag == True:
		print('YES')
	else:
		print('NO')


import math
t = int(input())
for i in range(t):
	values = list(map(int, input().split()))
	(n, x) = (values[0], values[1])
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		odd = []
		even = []
		count = x
		answer_found = False
		for i in range(len(a)):
			if a[i] % 2 == 0:
				even.append(a[i])
			else:
				odd.append(a[i])
		if len(odd) >= x and x % 2 != 0:
			answer_found = True
		if x % 2 == 0:
			count = x - 1
		if answer_found == False:
			while count >= 1:
				if len(odd) >= count and len(even) >= x - count:
					answer_found = True
				count = count - 2
		if answer_found:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	for i in range(n):
		A[i] = A[i] % 2
	u = A.count(1)
	w = n - u
	f = 1
	if u:
		if w:
			if x != n:
				f = 1
			else:
				f = u % 2
		else:
			f = x % 2
	else:
		f = 0
	if f:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	c_even = 0
	c_odd = 0
	for i in range(n):
		if a[i] & 1 == 1:
			c_odd += 1
		else:
			c_even += 1
	if c_odd == 0:
		print('No')
	elif c_odd < x:
		left = x
		if c_odd & 1 == 1:
			left = x - c_odd
		else:
			left = x - (c_odd - 1)
		if left <= c_even:
			print('Yes')
		else:
			print('No')
	elif x & 1 == 1:
		print('Yes')
	elif c_even > 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(b, c) = (0, 0)
	s = 0
	for i in range(n):
		if a[i] % 2 == 0:
			b += 1
		else:
			c += 1
	for i in range(0, x, 2):
		if c == 0:
			print('No')
			s += 1
			break
		elif i + 1 <= c and x - i - 1 <= b:
			print('Yes')
			s += 1
			break
	if s == 0:
		print('No')


class A:

	def solve(self):
		t = int(input())
		for p in range(t):
			[n, x] = [int(x) for x in input().split(' ')]
			nums = [int(x) for x in input().split(' ')]
			odds = [x for x in nums if x % 2 == 1]
			evens = [x for x in nums if x % 2 == 0]
			if n == x:
				if len(odds) % 2 == 0:
					print('No')
				else:
					print('Yes')
				continue
			if len(odds) == 0:
				print('No')
				continue
			if len(evens) == 0 and x % 2 == 0:
				print('No')
				continue
			print('Yes')
A().solve()


for t in range(int(input())):
	(n, k) = map(int, input().split())
	x = list(map(int, input().split()))
	odd = sum([i % 2 for i in x])
	even = n - odd
	ans = 'No'
	for e in range(k):
		if e <= even and k - e <= odd and ((k - e) % 2 == 1):
			ans = 'Yes'
			break
	print(ans)


def solve(n, x, a):
	a = [ai % 2 for ai in a]
	od = a.count(1)
	ev = a.count(0)
	if not od:
		print('No')
	elif x % 2 == 0 and (not ev):
		print('No')
	elif (od - 1) // 2 * 2 + ev < x - 1:
		print('No')
	else:
		print('Yes')
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	(*a,) = map(int, input().split())
	solve(n, x, a)


def solve(n, x, l):
	if n == x:
		if sum(l) % 2 != 0:
			return 'Yes'
	if n == x:
		if sum(l) % 2 == 0:
			return 'No'
	nodd = 0
	neven = 0
	for i in l:
		if i % 2 == 0:
			neven += 1
		else:
			nodd += 1
	f = 0
	for i in range(1, x + 1, 2):
		if nodd >= i and neven >= x - i:
			f = 1
			break
	if f:
		return 'Yes'
	else:
		return 'No'

def main():
	t = int(input())
	for i in range(t):
		(n, x) = map(int, input().split())
		l = list(map(int, input().split()))
		print(solve(n, x, l))
main()


def solution():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		nums = list(map(int, input().split()))
		odds = 0
		for i in range(n):
			if nums[i] % 2 == 1:
				odds += 1
		if odds == 0:
			print('NO')
			continue
		if odds > x:
			if x % 2 == 0 and odds == n:
				print('NO')
			else:
				print('YES')
			continue
		if odds % 2 == 0:
			if x - odds + 1 > n - odds:
				print('NO')
				continue
		print('YES')
solution()


def read_int():
	return int(input())

def read_ints():
	return map(int, input().split(' '))
t = read_int()
for case_num in range(t):
	(n, x) = read_ints()
	a = list(read_ints())
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
	odd = n - even
	print('Yes' if odd > 0 and even >= x - min(x - (1 - x % 2), odd - (1 - odd % 2)) else 'No')


for tc in range(int(input())):
	(n, x) = map(int, input().split(' '))
	a = list(map(int, input().split(' ')))
	cnt = [0, 0]
	for i in a:
		cnt[i % 2] += 1
	if cnt[1] == 0 or (x == n and sum(a) % 2 == 0) or (cnt[0] == 0 and x % 2 == 0):
		print('No')
	else:
		print('Yes')


def getCountOfOddAndEven(numbers):
	res = {'odd': 0, 'even': 0}
	for num in numbers:
		if num % 2 != 0:
			res['odd'] += 1
		else:
			res['even'] += 1
	return res
for _ in range(int(input())):
	x = input().split(' ')[1]
	arr = [*map(int, input().split(' '))]
	data = getCountOfOddAndEven(arr)
	(lo, le) = (data['odd'], data['even'])
	if lo == 0 or (int(x) % 2 == 0 and le == 0):
		print('No')
	elif lo + le > int(x) or (lo + le == int(x) and lo % 2 != 0):
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(0, t):
	(n, x) = map(int, input().split(' '))
	(odd, even) = (0, 0)
	arr = list(map(int, input().split(' ')))
	for i in range(0, n):
		if arr[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	res = 'No'
	if n == x:
		if odd % 2 == 1:
			res = 'Yes'
		print(res)
		continue
	if odd == 0:
		print('No')
		continue
	else:
		if x % 2 == 0:
			if odd >= x:
				if even >= 1:
					res = 'Yes'
			else:
				res = 'Yes'
		elif odd >= x:
			res = 'Yes'
		else:
			res = 'Yes'
		print(res)


from sys import stdin
input = stdin.readline
import bisect
import math
for xoxo in range(1):
	for _ in range(int(input())):
		(n, k) = map(int, input().split())
		a = list(map(int, input().split()))
		(ev, od) = (0, 0)
		for i in a:
			if i % 2 == 1:
				od += 1
			else:
				ev += 1
		if od == 0:
			ans = 'No'
		elif k % 2 == 0:
			if od > 0 and ev > 0 and ((od - 1) // 2 * 2 + (ev - 1) // 2 * 2 >= k - 2):
				ans = 'Yes'
			else:
				ans = 'No'
		elif k % 2 == 1:
			if (od - 1) // 2 * 2 + ev // 2 * 2 >= k - 1:
				ans = 'Yes'
			else:
				ans = 'No'
		print(ans)


for _ in range(int(input())):
	(n, x) = [int(_) for _ in input().split()]
	A = [int(_) for _ in input().split()]
	(a, b) = (0, 0)
	for _ in range(n):
		if A[_] % 2 == 1:
			a += 1
		else:
			b += 1
	if a > 0 and b > 0:
		if a + b == x:
			if a % 2 == 1:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	elif b == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('NO')
	else:
		print('No')


t = int(input())
for q in range(t):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	oc = 0
	ec = 0
	count = 0
	flag = False
	for x in a:
		if x % 2 == 0:
			ec += 1
		else:
			oc += 1
	ecc = ec
	if oc == 0:
		print('No')
	elif n == k:
		if oc % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif k == 1:
		if oc > 0:
			print('YES')
		else:
			print('NO')
	elif ec == 0:
		if k % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		for x in range(ec):
			count += 2
			ec -= 1
			if k - count // 2 <= oc and (k - count // 2) % 2 == 1:
				flag = True
				break
		if flag:
			print('Yes')
			continue
		count = 0
		flag = False
		ec = ecc
		for x in range(oc):
			count += 1
			oc -= 1
			if k - count <= ec and count % 2 == 1:
				flag = True
				break
		if flag:
			print('YES')
		else:
			print('NO')


def sp(n):
	if n == 1:
		return input()
	else:
		return map(str, input().split())

def np(n):
	if n == 1:
		return int(input())
	else:
		return map(int, input().split())
for _ in range(0, int(input())):
	(n, x) = np(2)
	e = 0
	l = list(np(2))
	for i in l:
		if i % 2 == 0:
			e += 1
	o = n - e
	ans = 'NO'
	if n == 1:
		if l[0] % 2 == 1:
			print('YES')
		else:
			print(ans)
	else:
		for i in range(1, n + 1, 2):
			if i <= o and (x - i <= e and x - i >= 0):
				ans = 'YES'
				break
		print(ans)


import sys

def I():
	return sys.stdin.readline().rstrip()
for tc in range(1, 1 + int(I())):
	(n, x) = map(int, I().split())
	a = list(map(int, I().split()))
	o = 0
	for i in a:
		if i % 2 == 1:
			o += 1
	e = n - o
	if o > 0:
		x -= 1
		o -= 1
	else:
		print('No')
		continue
	od = 2 * min(x // 2, o // 2)
	x -= od
	o -= od
	if e >= x:
		print('Yes')
	else:
		print('No')


T = int(input())
A = []
B = []
for i in range(0, T):
	(n, x) = [int(x) for x in input().split(' ')]
	u = input()
	A = u.split(' ')
	A = [int(x) % 2 for x in A]
	k = A.count(1)
	e = k % 2
	if k > 0 and n - k + min(k + e - 1, x + x % 2 - 1) >= x:
		B.append('Yes')
	else:
		B.append('No')
for i in B:
	print(i)


def read_int():
	n = int(input())
	return n

def read_ints():
	ints = [int(x) for x in input().split(' ')]
	return ints

def solve(n, x, a):
	odds = 0
	evens = 0
	for i in a:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	if n == x:
		if sum(a) % 2 == 0:
			return 'NO'
		else:
			return 'YES'
	if x % 2 == 1:
		if odds >= 1:
			return 'YES'
		else:
			return 'NO'
	elif odds >= 1 and evens >= 1:
		return 'YES'
	else:
		return 'NO'
t = read_int()
for case in range(t):
	(n, x) = read_ints()
	a = read_ints()
	sol = solve(n, x, a)
	print(sol)


def solve(n, x, arr):
	odd = 0
	even = 0
	for j in range(n):
		if arr[j] % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		return
	elif even == 0 and x % 2 == 0:
		print('No')
		return
	elif x == n and odd % 2 == 0:
		print('No')
		return
	else:
		print('Yes')
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	solve(n, x, arr)


import os
import sys
from io import BytesIO, IOBase
import math
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	o = 0
	e = 0
	for i in range(n):
		if l[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('NO')
	else:
		f = True
		x -= 1
		o -= 1
		while x > 0:
			if o >= 2 and x >= 2:
				o -= 2
				x -= 2
			elif e > 0:
				x -= 1
				e -= 1
			else:
				f = False
				break
		if f:
			print('YES')
		else:
			print('NO')


t = int(input())
result = []
for t in range(t):
	to = [int(s) for s in input().split(' ')]
	num = [int(s) for s in input().split(' ')]
	counte = 0
	counto = 0
	for i in range(to[1]):
		if num[i] % 2 != 0:
			counto += 1
		else:
			counte += 1
	if counto % 2 != 0:
		result.append('Yes')
	else:
		for i in range(to[1], to[0]):
			if num[i] % 2 != 0:
				if counto != to[1]:
					result.append('Yes')
					break
				else:
					continue
			if num[i] % 2 == 0:
				if counto > 1:
					result.append('Yes')
					break
				else:
					continue
		else:
			result.append('No')
for e in result:
	print(e)


import sys
from collections import defaultdict as dd
from collections import deque
from fractions import Fraction as f

def eprint(*args):
	print(*args, file=sys.stderr)
zz = 1
from math import *
import copy
if zz:
	input = sys.stdin.readline
else:
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('all.txt', 'w')

def li():
	return [int(x) for x in input().split()]

def fi():
	return int(input())

def si():
	return list(input().rstrip())

def mi():
	return map(int, input().split())

def bo(i):
	return ord(i) - ord('a')
from copy import *
from bisect import *
t = fi()
while t > 0:
	t -= 1
	(n, x) = mi()
	a = li()
	o = e = 0
	for i in a:
		if i % 2:
			o += 1
		else:
			e += 1
	flag = 0
	for i in range(1, x + 1, 2):
		if o >= i and e >= x - i:
			flag = 1
			break
	print('Yes' if flag == 1 else 'No')


test_cases = int(input())
for i in range(test_cases):
	(n, x) = [int(val) for val in input().split()]
	nums = [int(val) for val in input().split()]
	odd = sum((1 if num % 2 == 1 else 0 for num in nums))
	even = n - odd
	if odd == 0:
		print('No')
	elif odd == 1:
		print('Yes')
	elif x <= even + 1:
		print('Yes')
	else:
		odd -= 1
		x -= 1
		while x > 0:
			if odd > 1 and x > 1:
				odd -= 2
				x -= 2
			elif even > 0:
				even -= 1
				x -= 1
			else:
				break
		print('Yes' if x == 0 else 'No')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	s = map(int, input().split())
	(flag, flag2) = (0, 0)
	for i in s:
		if i % 2 != 0:
			flag += 1
	if flag == 0 or (flag % 2 == 0 and n == x) or (flag == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')


tq = int(input())
for xl in range(tq):
	(a, x) = list(map(int, input().split()))
	m = list(map(int, input().split()))
	count = 0
	counter = 0
	for aq in m:
		if aq % 2 == 0:
			counter += 1
		else:
			count += 1
	al = 1
	b = x - 1
	kx = True
	while al <= x:
		if al <= count and b <= counter:
			print('Yes')
			kx = False
			break
		al += 2
		b -= 2
	if kx:
		print('No')


(T,) = map(int, input().split())
for _ in range(T):
	(N, M) = map(int, input().split())
	X = list(map(int, input().split()))
	(a, b) = (0, 0)
	for x in X:
		if x % 2:
			a += 1
		else:
			b += 1
	if N != M:
		if a > 0 and b > 0:
			print('Yes')
		elif a == 0:
			print('No')
		elif M % 2:
			print('Yes')
		else:
			print('No')
	elif a % 2:
		print('Yes')
	else:
		print('No')


def func(arr, x):
	even = 0
	odd = 0
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	for j in range(1, odd + 1, 2):
		if j + even >= x and j <= x:
			return True
	return False
t = int(input())
i = 0
while i < t:
	l = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	if func(arr, l[1]):
		print('YES')
	else:
		print('NO')
	i = i + 1


t = int(input())
i = 0
while i < t:
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = 0
	odd = 0
	for y in arr:
		if y % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if x == 1:
		if odd > 0:
			print('Yes')
		else:
			print('No')
		i = i + 1
		continue
	r = False
	for y in range(1, odd + 1, 2):
		if x - y <= even and y <= x:
			print('Yes')
			r = True
			break
	if r == False:
		print('No')
	i = i + 1


t = int(input())
while t:
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd > 0:
		odd -= 1
		x = x - 1
		for i in range(0, x + 1, 2):
			if i <= odd and x - i <= even:
				print('Yes')
				break
		else:
			print('No')
	else:
		print('No')
	t -= 1


T = int(input())
for t in range(T):
	(n, x) = [int(x) for x in input().split()]
	odd = 0
	for numb in input().split():
		if int(numb) % 2 == 1:
			odd += 1
	even = n - odd
	if x % 2 == 0 and even == 0:
		print('No')
		continue
	likutis = max(1, x - even)
	if likutis % 2 == 0:
		likutis += 1
	if likutis <= odd:
		print('Yes')
	else:
		print('No')


from sys import stdin
import math
fastinput = stdin.readline
for _ in range(int(fastinput())):
	(n, x) = map(int, fastinput().split())
	l = list(map(int, input().split()))
	count = 0
	odd = []
	for i in l:
		if i % 2 != 0:
			count += 1
	flag = 0
	if x % 2 == 0:
		t = x - 1
	else:
		t = x
	while t >= 1:
		if count >= t and n - count >= x - t:
			flag = 1
			break
		t -= 2
	if flag == 1:
		print('Yes')
	else:
		print('No')


from sys import stdin
from math import ceil
input = stdin.buffer.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = sum((i & 1 for i in map(int, input().split())))
	if not a:
		print('No')
	elif n == x:
		if a & 1:
			print('Yes')
		else:
			print('No')
	elif a == n and (not x & 1):
		print('No')
	else:
		print('Yes')


def oddselection(n, x, array):
	if n - x >= 2:
		even = False
		odd = False
		for i in array:
			if i % 2 == 0:
				even = True
			else:
				odd = True
			if even and odd:
				break
		if even and odd:
			return 'YES'
		elif even and (not odd):
			return 'NO'
		elif odd and (not even):
			if x % 2 == 1:
				return 'YES'
			else:
				return 'NO'
	elif n - x == 1:
		even = False
		odd = False
		for i in array:
			if i % 2 == 0:
				even = True
			else:
				odd = True
			if even and odd:
				break
		s = sum(array)
		if s % 2 == 1:
			if even:
				return 'YES'
			else:
				return 'NO'
		elif odd:
			return 'YES'
		else:
			return 'NO'
	else:
		s = sum(array)
		if s % 2 == 1:
			return 'YES'
		else:
			return 'NO'
t = int(input())
array = []
for j in range(t):
	(n, x) = list(map(int, input().split(' ')))
	a = list(map(int, input().split(' ')))
	array.append([n, x, a])
for x in array:
	print(oddselection(*x))


from sys import stdin
input = stdin.buffer.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odd = sum([int(i) & 1 for i in input().split()])
	if odd >= x:
		if x & 1:
			print('Yes')
		elif odd < n:
			print('Yes')
		else:
			print('No')
	elif odd & 1:
		print('Yes')
	elif x < n and odd:
		print('Yes')
	else:
		print('No')


from sys import *
input = stdin.readline
for u in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	c = 0
	ka = 0
	for i in range(n):
		if l[i] % 2 == 0:
			c = c + 1
	for i in range(c + 1):
		if x - i <= 0:
			break
		if (x - i) % 2 == 1 and x - i <= n - c:
			ka = 1
			break
	if ka == 0:
		print('No')
	else:
		print('Yes')


try:
	t = int(input())
	while t:
		(_, x) = list(map(int, input().split()))
		arr = list(map(int, input().split()))
		(odds, evens) = (0, 0)
		for e in arr:
			if e & 1:
				odds += 1
			else:
				evens += 1
		flag = 0
		for i in range(1, odds + 1, 2):
			if x - i >= 0 and x - i <= evens:
				print('YES')
				flag = 1
				break
		if not flag:
			print('NO')
		t -= 1
except:
	pass


import sys, math
input = sys.stdin.readline
t = int(input())
for r in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = False
	for i in range(1, odd + 1, 2):
		if even >= x - i and x - i >= 0:
			flag = True
			break
	if flag == True:
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
read = stdin.readline

def puts(x, end='\n'):
	stdout.write(x + end)

def read_int():
	return int(read())

def list_in():
	return [i for i in read().split()]

def int_list_in():
	return [int(i) for i in read().split()]

def solve():
	(n, x) = int_list_in()
	ints = int_list_in()
	ecount = 0
	ocount = 0
	for i in ints:
		if i % 2 == 0:
			ecount += 1
		else:
			ocount += 1
	if ecount == 0 and x % 2 != 0:
		print('Yes')
		return
	elif ecount == 0:
		print('No')
		return
	if ocount > 0:
		if x - ecount <= 0:
			print('Yes')
		elif (x - ecount) % 2 != 0:
			print('Yes')
		elif x - ecount + 1 <= ocount:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
for i in range(read_int()):
	solve()


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	items = list(map(int, input().split()))
	even = 0
	odd = 0
	for item in items:
		if item % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 0:
		if odd == 0 or odd == n or (odd % 2 == 0 and x == n):
			print('No')
		else:
			print('Yes')
	elif odd == 0 or (odd % 2 == 0 and x == n):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().strip().split()))[:n]
	odd = 0
	even = 0
	flag = 0
	for j in range(n):
		if a[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	mn = min(odd, x)
	for k in range(1, mn + 1, 2):
		need = x - k
		if need <= even:
			flag = 1
	if flag == 1:
		print('YES')
	else:
		print('NO')


def solve():
	e = 0
	o = 0
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	for i in a:
		if i % 2 == 1:
			o += 1
		else:
			e += 1
	if e == n:
		return 'No'
	if x % 2 == 0 and o == n:
		return 'No'
	if x == n and o % 2 == 0:
		return 'No'
	return 'Yes'
for t in range(int(input())):
	print(solve())


from sys import stdin
for t in range(int(input())):
	(n, x) = map(int, stdin.readline().split())
	arr = list(map(int, stdin.readline().split()))
	(cto, cte) = (0, 0)
	for i in range(n):
		if arr[i] & 1:
			cto += 1
		else:
			cte += 1
	ans = 'No'
	for i in range(1, cto + 1, 2):
		if i <= cto and x - i <= cte and (x - i >= 0):
			ans = 'Yes'
			break
	print(ans)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split(' '))
	vals = map(int, input().split(' '))
	nodd = sum((1 for v in vals if v % 2))
	neven = n - nodd
	myeven = min(x - 1, neven)
	rem = x - myeven
	if rem % 2 == 1 and nodd >= rem:
		print('Yes')
	elif myeven > 0 and nodd >= rem + 1:
		print('Yes')
	else:
		print('No')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	odd_c = 0
	even_c = 0
	arr = list(map(int, input().split()))
	for i in arr:
		if i % 2 == 0:
			even_c += 1
		else:
			odd_c += 1
	if odd_c == 0:
		print('No')
	else:
		odd_c -= 1
		x -= 1
		while x > 0:
			if odd_c > 1 and x > 1:
				odd_c -= 2
				x -= 2
			elif even_c > 0:
				even_c -= 1
				x -= 1
			else:
				break
		if x == 0:
			print('Yes')
		else:
			print('No')
	t -= 1


import sys
from collections import defaultdict as dd
from queue import Queue
import math
import itertools
try:
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
except:
	pass
input = sys.stdin.readline
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	(q, w) = (0, 0)
	for i in a:
		if i % 2 == 0:
			q += 1
		else:
			w += 1
	if w == 0:
		print('no')
	else:
		e = min(k, w) - (1 - min(k, w) % 2)
		if q >= k - e:
			print('yes')
		else:
			print('no')


import os
import random
import sys
from io import BytesIO, IOBase
import math

def inputIntArray():
	return list(map(int, input().rstrip().split()))

def inputArray():
	return input().rstrip().split()

def inputVars():
	return map(int, input().rstrip().split())

def inputNum():
	return int(input())

def main():
	for _ in range(inputNum()):
		(n, x) = inputVars()
		arr = inputIntArray()
		oddsLength = 0
		evenLength = 0
		for num in arr:
			if num % 2 == 0:
				evenLength += 1
			else:
				oddsLength += 1
		if oddsLength == 0 or (oddsLength == n and x % 2 == 0) or (x == n and sum(arr) % 2 == 0):
			print('No')
		else:
			print('Yes')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


def swaparr(arr, a, b):
	temp = arr[a]
	arr[a] = arr[b]
	arr[b] = temp

def gcd(a, b):
	if a == 0:
		return b
	return gcd(b % a, a)

def nCr(n, k):
	if k > n - k:
		k = n - k
	res = 1
	for i in range(k):
		res = res * (n - i)
		res = res / (i + 1)
	return int(res)

def upper_bound(a, x, lo=0):
	hi = len(a)
	while lo < hi:
		mid = (lo + hi) // 2
		if a[mid] < x:
			lo = mid + 1
		else:
			hi = mid
	return lo

def primefs(n):
	primes = {}
	while n % 2 == 0:
		primes[2] = primes.get(2, 0) + 1
		n = n // 2
	for i in range(3, int(n ** 0.5) + 2, 2):
		while n % i == 0:
			primes[i] = primes.get(i, 0) + 1
			n = n // i
	if n > 2:
		primes[n] = primes.get(n, 0) + 1
	return primes

def power(x, y, p):
	res = 1
	x = x % p
	if x == 0:
		return 0
	while y > 0:
		if y & 1 == 1:
			res = res * x % p
		y = y >> 1
		x = x * x % p
	return res

def swap(a, b):
	temp = a
	a = b
	b = temp
	return (a, b)

def find(x, link):
	p = x
	while p != link[p]:
		p = link[p]
	while x != p:
		nex = link[x]
		link[x] = p
		x = nex
	return p

def union(x, y, link, size):
	x = find(x, link)
	y = find(y, link)
	if size[x] < size[y]:
		(x, y) = swap(x, y)
	if x != y:
		size[x] += size[y]
		link[y] = x

def sieve(n):
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	return prime
MAXN = int(1000000.0 + 5)

def spf_sieve():
	spf[1] = 1
	for i in range(2, MAXN):
		spf[i] = i
	for i in range(4, MAXN, 2):
		spf[i] = 2
	for i in range(3, ceil(MAXN ** 0.5), 2):
		if spf[i] == i:
			for j in range(i * i, MAXN, i):
				if spf[j] == j:
					spf[j] = i

def factoriazation(x):
	ret = {}
	while x != 1:
		ret[spf[x]] = ret.get(spf[x], 0) + 1
		x = x // spf[x]
	return ret

def int_array():
	return list(map(int, input().strip().split()))

def str_array():
	return input().strip().split()
MOD = int(1000000000.0) + 7
CMOD = 998244353
INF = float('inf')
NINF = -float('inf')
for _ in range(int(input())):
	(n, x) = int_array()
	a = int_array()
	odd = even = 0
	for i in a:
		if i & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	odd -= 1
	x -= 1
	odd_pairs = odd // 2 * 2
	if x % 2 == 0:
		if odd_pairs + even >= x:
			print('Yes')
		else:
			print('No')
	else:
		x -= 1
		x -= min(x, odd_pairs)
		if even >= x + 1:
			print('Yes')
		else:
			print('No')


import sys
from collections import defaultdict as dd
from queue import Queue
import math
import itertools
try:
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
except:
	pass
input = sys.stdin.readline
for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(q, w) = (0, 0)
	for j in a:
		if j % 2 == 0:
			q += 1
	w = n - q
	t = 0
	if w > 0:
		for j in range(1, w + 1, 2):
			if j > x:
				t = 1
				j -= 2
				break
		if q >= x - j:
			print('yes')
		else:
			print('no')
	else:
		print('no')


import sys
input = sys.stdin.readline
from collections import defaultdict as dd
t = int(input())
while t:
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	ce = 0
	co = 0
	for i in l:
		if i % 2:
			co += 1
		else:
			ce += 1
	if x <= co and x % 2 or (x <= co and x % 2 == 0 and ce):
		print('YES')
	else:
		x = max(0, x - ce)
		if co > x and x % 2 or (co > x and x % 2 == 0 and ce):
			print('YES')
		elif co == x and x % 2:
			print('YES')
		else:
			print('NO')
	t -= 1


s = lambda : map(int, input().split())
(t,) = s()
for _ in [0] * t:
	(n, x) = s()
	a = b = c = 1
	for y in s():
		a ^= y
		b &= y
		c &= ~y
	print('YNeos'[x > n - a % 2 or ~x & b | c::2])


t = int(input())
result = []
for i in range(t):
	gt = [int(x) for x in input().split(' ')]
	n = gt[0]
	x = gt[1]
	a = [int(x) for x in input().split(' ')]
	even = 0
	for j in a:
		if j % 2 == 0:
			even = even + 1
	odd = n - even
	kq = 'NO'
	for k in range(x + 1):
		if k > odd or x - k > even:
			continue
		if k % 2 != 0:
			kq = 'YES'
			break
	result.append(kq)
for x in result:
	print(x)


import sys
try:
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
except:
	pass
input = sys.stdin.readline
for tt in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for i in range(n):
		if l[i] % 2 == 0:
			e += 1
		else:
			o += 1
	for i in range(1, o + 1, 2):
		if x - i <= e and i <= x:
			print('YES')
			break
	else:
		print('NO')


answer_list = list()
for times in range(int(input())):
	requirements = input().split(' ')
	array_a = [False for i in input().split(' ') if int(i) % 2 != 0]
	length = int(requirements[0])
	pick = int(requirements[1])
	odd = len(array_a)
	even = length - odd
	if odd == 0:
		answer_list.append('No')
	else:
		check = 0
		for odd_number in range(1, odd + 1, 2):
			left_to_pick = pick - odd_number
			if left_to_pick <= even and left_to_pick >= 0:
				answer_list.append('Yes')
				check = 1
				break
		if check != 1:
			answer_list.append('No')
		else:
			check = 0
for i in answer_list:
	print(i)


t = int(input())
for i in range(t):
	NX = list(map(int, input().split()))
	n = NX[0]
	x = NX[1]
	nums = list(map(int, input().split()))
	even = []
	odd = []
	for j in range(n):
		if nums[j] % 2 == 0:
			even.append(nums[j])
		else:
			odd.append(nums[j])
	if len(odd) == 0:
		print('No')
	elif x % 2 == 0 and len(odd) == n:
		print('No')
	else:
		k = 1
		while k <= len(odd):
			if len(even) >= x - k:
				print('Yes')
				break
			k += 2
		if k > len(odd):
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if A[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	flag = False
	for j in range(x + 1):
		if j % 2 == 1 and j <= odd and (x - j <= even):
			flag = True
			break
	if flag:
		print('Yes')
	else:
		print('No')


hj = int(input())
for yu in range(hj):
	s = 0
	qw = input().split()
	n = int(qw[0])
	x = int(qw[1])
	z = input().split()
	for w in range(len(z)):
		z[w] = int(z[w])
	for u in z:
		if u % 2 == 0:
			s += 1
	d = n - s
	if s == 0 and x % 2 == 0:
		print('No')
	elif s == n:
		print('No')
	elif n == x and d % 2 == 0:
		print('No')
	else:
		print('Yes')


import math

def dict_sort(ans):
	ans = sorted(ans.items(), reverse=True, key=lambda kv: kv[1])

def is_prime(n, k):
	if n == 1:
		return 0
	for i in range(2, int(math.sqrt(n)) + 1):
		if n % i == 0:
			res = i
			break
	return res

def inp():
	ls = list(map(int, input().split()))
	return ls
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	ls = inp()
	odd = 0
	even = 0
	for item in ls:
		if item % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd < 1:
		print('no')
	elif odd % 2 == 1:
		if even < 1 and x % 2 == 0:
			print('no')
		else:
			print('yes')
	elif odd >= x:
		if even > 0 or x % 2 == 1:
			print('yes')
		else:
			print('no')
	elif even >= x - odd + 1:
		print('yes')
	else:
		print('no')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	s = list(map(int, input().split()))
	nch = 0
	ch = 0
	for i in s:
		if i % 2 == 0:
			ch += 1
		else:
			nch += 1
	b = 0
	for j in range(1, nch + 1, 2):
		if j + ch == x:
			b = 1
			break
		elif ch != 0 and j <= x and (j + ch >= x):
			b = 1
			break
	if b == 1:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odds = 0
	lis = list(map(int, input().split()))
	for i in lis:
		if i % 2 == 1:
			odds += 1
	if odds == 0:
		print('No')
		continue
	if x % 2 == 0 and odds == len(lis):
		print('No')
		continue
	wanted = x - (len(lis) - odds)
	if wanted <= 0:
		print('Yes')
		continue
	else:
		wanted = wanted // 2 * 2 + 1
		if odds >= wanted:
			print('Yes')
		else:
			print('No')


t = int(input())
while t > 0:
	(n, x) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	e = 0
	odd = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
	else:
		if odd % 2 == 0:
			odd -= 1
		if e == 0 and x % 2 == 0:
			print('NO')
		elif odd + e >= x:
			print('YES')
		else:
			print('NO')
	t -= 1


t = int(input())
for i in range(t):
	(n, k) = list(map(int, input().split()))
	vetor = list(map(int, input().split()))
	par = 0
	impar = 0
	for a in vetor:
		if a % 2 == 1:
			impar += 1
		else:
			par += 1
	if par == n or (par == 0 and k % 2 == 0):
		print('No')
	elif impar > 0:
		if impar % 2 == 0:
			impar -= 1
		if impar + par >= k:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


from sys import stdin, exit
input = stdin.readline

def i():
	return input()

def ii():
	return int(input())

def iis():
	return map(int, input().split())

def liis():
	return list(map(int, input().split()))

def print_array(a):
	print(' '.join(map(str, a)))
t = ii()
for _ in range(t):
	(n, x) = iis()
	a = liis()
	(odds, evens) = (0, 0)
	for i in a:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	x -= min(evens, x - 1)
	if x == 1 and odds > 0 or (x % 2 == 1 and odds >= x) or (x % 2 == 0 and odds > x and (evens > 0)):
		print('Yes')
	else:
		print('No')


from collections import Counter
T = int(input())
for t in range(T):
	(n, x) = map(int, input().split())
	a = [d % 2 for d in map(int, input().split())]
	cnt = Counter(a)
	even = cnt.get(0, 0)
	odds = cnt.get(1, 0)
	if even == 0 and x % 2 == 0:
		print('No')
	elif odds == 0:
		print('No')
	elif (odds - 1) // 2 * 2 + even < x - 1:
		print('No')
	else:
		print('Yes')


import sys
from bisect import *
from math import floor, sqrt, ceil, factorial as F, gcd, pi
from itertools import chain, combinations, permutations, accumulate
from collections import Counter, defaultdict, OrderedDict, deque
from array import array
INT_MAX = sys.maxsize
INT_MIN = -sys.maxsize - 1
mod = 1000000007
ch = 'abcdefghijklmnopqrstuvwxyz'
lcm = lambda a, b: a * b // gcd(a, b)
setbit = lambda x: bin(x)[2:].count('1')

def solve():
	T = int(sys.stdin.readline())
	for _ in range(T):
		(n, x) = map(int, sys.stdin.readline().split())
		a = list(map(int, sys.stdin.readline().split()))
		odd = 0
		for i in a:
			if i & 1:
				odd += 1
		even = n - odd
		if even == 0:
			if x & 1:
				print('YES')
			else:
				print('NO')
		elif odd == 0:
			print('NO')
		elif n == x:
			if sum(a) & 1:
				print('YES')
			else:
				print('NO')
		else:
			print('YES')
try:
	sys.stdin = open('input.txt', 'r')
except:
	pass
solve()


from collections import Counter
from collections import defaultdict
from collections import deque
import math
import heapq
import sys
input = sys.stdin.readline
from bisect import *
rs = lambda : input().strip()
ri = lambda : int(input())
rl = lambda : list(map(int, input().split()))
rls = lambda : list(map(str, input().split()))
t = int(input())
for _ in range(0, t):
	(n, x) = rl()
	a = rl()
	even = 0
	odd = 0
	for i in a:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	ans = 0
	if odd == 0:
		print('No')
		continue
	odd = odd - 1
	for i in range(0, x - 1):
		if odd != 0:
			odd = odd - 1
			ans = ans + 1
		else:
			even = even - 1
			ans = ans + 2
	if ans % 2 == 1 and even > 0:
		print('Yes')
	elif ans % 2 == 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, X) = [int(x) for x in input().split()]
	odd = 0
	for x in input().split():
		odd += int(x) & 1
	if odd == 0:
		print('No')
	elif odd % 2 == 0 and X == n:
		print('No')
	elif X % 2 == 0 and odd == n:
		print('No')
	else:
		print('Yes')


T = int(input())
for _ in range(T):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	pair = 0
	impair = 0
	for elt in A:
		if elt % 2 == 0:
			pair += 1
		else:
			impair += 1
	if impair == 0:
		print('No')
	else:
		X -= 1
		impair -= 1
		if impair % 2 == 1:
			impair -= 1
		X -= min(impair, X - X % 2)
		X -= pair
		if X <= 0:
			print('Yes')
		else:
			print('No')


import sys, random, math
from bisect import bisect_left, bisect_right
input = sys.stdin.readline

def main():
	inf = 10 ** 20
	t = int(input())
	for _ in range(1, t + 1):
		(n, y) = map(int, input().split())
		(e, o) = (0, 0)
		for x in input().split():
			if int(x) & 1:
				o += 1
			else:
				e += 1
		ok = 0
		for i in range(1, min(y, o) + 1, 2):
			if i + e >= y:
				ok = 1
		if ok:
			print('Yes')
		else:
			print('No')
main()


tests = int(input())
for _ in range(tests):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd % 2 == 0:
		odd -= 1
	if x % 2 != 0 and odd + even >= x and (odd > 0):
		print('Yes')
	elif x % 2 == 0 and odd + even >= x and (odd > 0) and (even > 0):
		print('yes')
	else:
		print('No')


def odd(x):
	if x % 2 == 1:
		return 1
	else:
		return 0

def even(x):
	if x % 2 == 0:
		return 1
	else:
		return 0
times = int(input())
for i in range(times):
	firstLine = input().split(' ')
	n = int(firstLine[0])
	x = int(firstLine[1])
	numbers = input().split(' ')
	for i in range(0, len(numbers)):
		numbers[i] = int(numbers[i])
	if n == x:
		if sum(numbers) % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif len(list(filter(odd, numbers))) == len(numbers) and x % 2 == 1:
		print('YES')
	elif x % 2 == 1:
		if len(list(filter(odd, numbers))) % 2 == 1:
			print('YES')
		elif len(list(filter(odd, numbers))) == x:
			print('YES')
		elif len(list(filter(odd, numbers))) % 2 != 1 and len(list(filter(odd, numbers))) > 0:
			print('YES')
		else:
			print('NO')
	elif len(list(filter(even, numbers))) > 0 and len(list(filter(odd, numbers))) > 0:
		print('YES')
	else:
		print('NO')


T = int(input())
for t in range(T):
	(n, x) = [int(i) for i in input().split()]
	A = [int(i) % 2 for i in input().split()]
	even_count = 0
	for i in A:
		if i == 0:
			even_count += 1
	odd_count = n - even_count
	if odd_count >= x:
		if x % 2 == 0:
			if even_count > 0:
				print('Yes')
			else:
				print('No')
		elif x % 2 == 1:
			print('Yes')
	elif odd_count == 0:
		print('No')
	elif odd_count % 2 == 0:
		if even_count >= x - odd_count + 1:
			print('Yes')
		else:
			print('No')
	elif even_count >= x - odd_count:
		print('Yes')


import math
t = int(input())
for qq in range(t):
	(n, x) = [int(i) for i in input().split()]
	L = [int(i) for i in input().split()]
	e = 0
	d = 0
	for i in L:
		if i % 2 == 0:
			e += 1
		else:
			d += 1
	if d == 0:
		print('No')
	elif x % 2 == 0 and e == 0:
		print('No')
	elif e + 2 * ((d - 1) // 2) < x - 1:
		print('No')
	else:
		print('Yes')


for t in range(int(input())):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	odd = sum(map(lambda x: x % 2 == 1, a))
	even = sum(map(lambda x: x % 2 == 0, a))
	total = sum(a) % 2
	if x == n:
		if total:
			print('Yes')
		else:
			print('No')
	elif odd == 0:
		print('No')
	elif x % 2 == 1:
		print('Yes')
	elif even:
		print('Yes')
	else:
		print('No')


import sys
from collections import deque, defaultdict as dd
from bisect import bisect, bisect_left, bisect_right, insort, insort_left, insort_right
from itertools import permutations
from datetime import datetime
from math import ceil, sqrt, log, gcd

def ii():
	return int(input())

def si():
	return input()

def mi():
	return map(int, input().split())

def li():
	return list(mi())
abc = 'abcdefghijklmnopqrstuvwxyz'
abd = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}
mod = 1000000007
inf = float('inf')
vow = ['a', 'e', 'i', 'o', 'u']
(dx, dy) = ([-1, 1, 0, 0], [0, 0, 1, -1])

def read():
	tc = 0
	if tc:
		input = sys.stdin.readline
	else:
		sys.stdin = open('input1.txt', 'r')
		sys.stdout = open('output1.txt', 'w')

def solve():
	for _ in range(ii()):
		(n, x) = mi()
		a = li()
		e = 0
		o = 0
		for i in a:
			if i & 1:
				o += 1
			else:
				e += 1
		f = 0
		if x > n:
			print('NO')
			continue
		if e == 0:
			if x % 2:
				print('YES')
			else:
				print('NO')
		else:
			if o % 2 == 0:
				o -= 1
			if e + o >= x and o > 0:
				print('YES')
			else:
				print('NO')
solve()


for i in range(int(input())):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	even = odd = c = 0
	for i in lst:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	ok = False
	for i in range(1, 10000, 2):
		if i > min(x, odd):
			break
		if even + i >= x:
			ok = True
			break
	print('Yes' if ok else 'No')


test_cases = int(input())
for z in range(test_cases):
	(n, x) = list(map(int, input().split()))
	ls = list(map(int, input().split()))
	odd = 0
	c = 0
	even = 0
	for i in ls:
		if i % 2 != 0:
			odd += 1
		else:
			even += 1
		if odd > 0:
			if odd + even == x:
				if odd % 2 != 0:
					c = 1
					break
			elif even + odd > x and even > 0:
				c = 1
				break
	if c == 1:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	count = 0
	for a in arr:
		if a % 2 != 0:
			count += 1
	if count == 0 or (x == n and count % 2 == 0 or (x % 2 == 0 and count == n)):
		print('NO')
	else:
		print('YES')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	e_count = len([i for i in arr if i % 2 == 0])
	o_count = n - e_count
	m = min(x, o_count)
	if o_count == 0 or (x == n and o_count % 2 == 0) or (x % 2 == 0 and o_count == n):
		print('No')
	else:
		print('Yes')


def opportunity():
	(quantity, target) = [int(i) for i in input().split()]
	nums = [int(i) for i in input().split()]
	(even, odd) = (0, 0)
	for i in nums:
		even += 1 if i % 2 == 0 else 0
		odd += 1 if i % 2 == 1 else 0
	if odd == 0:
		return 'No'
	odd -= 1 if odd % 2 == 0 else 0
	if odd <= target:
		target -= odd
		if target <= even:
			return 'Yes'
	elif odd > target:
		if even > 0 or target % 2 == 1:
			return 'Yes'
	return 'No'
t = int(input())
for i in range(t):
	print(opportunity())


def solve(n, x, A):
	n_even = sum((a % 2 == 0 for a in A))
	n_odd = sum((a % 2 != 0 for a in A))
	if n_odd == 0:
		return False
	assert n_odd > 0
	x -= 1
	n_odd -= 1
	taken = 2 * min(n_odd // 2, x // 2)
	x -= taken
	n_odd -= taken
	assert n_odd >= 0
	assert x >= 0
	if x == 0:
		return True
	if x <= n_even:
		return True
	return False

def compare(gen_args, solve_1, solve_2):
	while True:
		args = gen_args()
		print('>', args)
		res_1 = solve_1(*args)
		res_2 = solve_2(*args)
		if res_1 != res_2:
			print(args, ':', res_1, 'VS', res_2)
			raise AssertionError

def gen_args():
	import random
	n = random.randint(1, 10)
	x = random.randint(1, n)
	A = [random.randint(1, 2) for _ in range(n)]
	return (n, x, A)

def solve_bf(n, x, A):
	import itertools
	for t in itertools.combinations(A, r=x):
		if sum(t) % 2 != 0:
			return True
	return False

def main():
	T = int(input())
	for _ in range(T):
		(n, x) = map(int, input().split())
		A = list(map(int, input().split()))
		print('YES' if solve(n, x, A) else 'NO')
main()


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	b = []
	for i in range(n):
		b.append(a[i] % 2)
	b.sort()
	s = sum(b[:x])
	ans = 'No'
	if s % 2:
		ans = 'Yes'
	for i in range(n - x):
		s -= b[i]
		s += b[i + x]
		if s % 2:
			ans = 'Yes'
	print(ans)


tc = int(input())
for _ in range(tc):
	(n, x) = arr = list(map(int, input().split()))
	l = list(map(int, input().split()))
	odd = 0
	for a in l:
		if a % 2 == 1:
			odd += 1
	if odd == 0 or (odd == n and x % 2 == 0) or (x == n and odd % 2 == 0):
		print('NO')
	else:
		print('YES')


def func(n, m, l):
	even = 0
	odd = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd % 2 == 0 and odd != 0:
		odd -= 1
	if odd == 0 or (even == 0 and m % 2 == 0) or even + odd < m:
		return 0
	else:
		return 1
for i in range(int(input())):
	(n, m) = map(int, input().split())
	l = [int(x) for x in input().split()]
	if func(n, m, l):
		print('YES')
	else:
		print('NO')


def isOdd(num):
	if num % 2 != 0:
		return True
	else:
		return False

def getInput():
	(n, x) = [int(a) for a in input().split()]
	arr = [int(b) for b in input().split()]
	return (n, x, arr)

def solve():
	t = int(input())
	for i in range(t):
		(n, x, arr) = getInput()
		odd_count = 0
		even_count = 0
		for num in arr:
			if isOdd(num):
				odd_count += 1
			else:
				even_count += 1
		res = 'NO'
		for j in range(1, min(x, odd_count) + 1, 2):
			if even_count >= x - j:
				res = 'YES'
				break
		print(res)
solve()


import sys
from functools import lru_cache, cmp_to_key
from heapq import merge, heapify, heappop, heappush
from math import *
from collections import defaultdict as dd, deque, Counter as C
from itertools import combinations as comb, permutations as perm
from bisect import bisect_left as bl, bisect_right as br, bisect
from time import perf_counter
from fractions import Fraction
mod = int(pow(10, 9) + 7)
mod2 = 998244353

def data():
	return sys.stdin.readline().strip()

def out(*var, end='\n'):
	sys.stdout.write(' '.join(map(str, var)) + end)

def l():
	return list(sp())

def sl():
	return list(ssp())

def sp():
	return map(int, data().split())

def ssp():
	return map(str, data().split())

def l1d(n, val=0):
	return [val for i in range(n)]

def l2d(n, m, val=0):
	return [l1d(n, val) for j in range(m)]
for _ in range(int(input())):
	(n, x) = l()
	A = l()
	B = []
	for i in range(n):
		B.append(A[i] % 2)
	B.sort()
	ans = 'NO'
	for i in range(n - x + 1):
		if sum(B[i:i + x]) % 2:
			ans = 'YES'
			break
	print(ans)


def res(a, x, n):
	c = 0
	for i in a:
		if i % 2 != 0:
			c = c + 1
	k = n - c
	if c == 0:
		print('No')
		return
	if c == n and x % 2 == 0:
		print('No')
		return
	if c % 2 == 0:
		c = c - 1
	if c >= x:
		print('Yes')
		return
	if c + k >= x:
		print('Yes')
		return
	print('No')
t = int(input())
while t > 0:
	t = t - 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	res(a, x, n)


import os
import sys
import io
import math
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	nodd = 0
	for i in a:
		if i % 2 == 1:
			nodd += 1
	neven = n - nodd
	if nodd == 0:
		print('No')
		continue
	if x == n:
		if nodd % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	if x % 2 == 0:
		if neven >= 1:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


def ans(l, b):
	odd = 0
	even = 0
	f = len(l)
	for i in range(0, len(l), 1):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == f and b % 2 != 0:
		print('Yes')
	elif odd > b and b % 2 != 0:
		print('Yes')
	elif b == 1 and odd >= 1:
		print('Yes')
	elif odd >= 1 and even >= 1:
		print('Yes')
	else:
		print('No')
t = int(input())
while t > 0:
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	if a == b:
		if sum(l) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		ans(l, b)
	t -= 1


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	li = list(map(int, input().split()))
	od = 0
	ev = 0
	for i in range(n):
		if li[i] % 2 == 1:
			od += 1
		else:
			ev += 1
	ans = 'No'
	for i in range(1, x + 1, 2):
		if od >= i and ev >= x - i:
			ans = 'Yes'
			break
	print(ans)


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	c = 0
	o = 0
	for i in range(n):
		if lst[i] % 2 != 0:
			o += 1
		else:
			c += 1
	if c >= x - 1:
		if o >= 1:
			print('Yes')
		else:
			print('No')
	else:
		c1 = c
		c = x - 1 - c
		if c % 2 != 0:
			if o >= c + 2 and c1 != 0:
				print('Yes')
			else:
				print('No')
		elif o >= c + 1:
			print('Yes')
		else:
			print('No')


total_case = int(input())
for i in range(total_case):
	(n, x) = [int(k) for k in input().split()]
	aline = [int(k) for k in input().split()]
	odd = 0
	even = 0
	for num in aline:
		parity = num % 2
		even += 1 - parity
		odd += parity
	result = False
	if x > n:
		pass
	limit = min(odd, x)
	for j in range(1, limit + 1, 2):
		if even >= x - j:
			result = True
			break
	if result:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	(o, e) = (0, 0)
	a = list(map(int, input().split()))
	for i in range(n):
		if a[i] % 2 == 1:
			o += 1
		else:
			e += 1
	if o == n:
		if x % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif o % 2 == 0:
		if x == n or o == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('YES')


def main():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		b = list(filter(lambda x: x % 2 == 1, a))
		k = 0
		for i in range(1, len(b) + 1, 2):
			if x <= i + n - len(b):
				k = i
				break
		print('Yes' if k != 0 and x >= k else 'No')
main()


def odd(n, x, a):
	oddcount = sum((1 for i in a if i % 2 == 1))
	evencount = n - oddcount
	if x == n:
		return oddcount % 2 == 1
	if oddcount > 0 and evencount > 0:
		return True
	elif oddcount == 0:
		return False
	else:
		return x % 2 == 1
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print('Yes' if odd(n, x, a) else 'No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('NO')
		continue
	if even == 0:
		print('YES' if x % 2 == 1 else 'NO')
		continue
	iter = 1
	while iter <= odd:
		if iter + 2 > odd:
			break
		iter += 2
	if x - iter <= even:
		print('YES')
	else:
		print('NO')


def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s)])

def invr():
	return map(int, input().split())
entries = inp()
for i in range(entries):
	l = inlt()
	n = l[0]
	k = l[1]
	l = inlt()
	odd = 0
	even = 0
	for x in l:
		if x % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		odd -= 1
		k -= 1
		flag = 1
		while k > 0:
			if odd >= 2 and k > 1:
				odd -= 2
				k -= 2
			elif even > 0:
				even -= 1
				k -= 1
			else:
				flag = 0
				break
		if flag:
			print('Yes')
		else:
			print('No')


def solve(arr, x):
	evens = 0
	odds = 0
	for num in arr:
		if num % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds == 0:
		return False
	if odds % 2 == 0:
		odds -= 1
	if x % 2 != 0:
		if odds >= x:
			return True
		if evens >= x - odds:
			return True
	if x % 2 == 0:
		for i in range(1, x, 2):
			if odds >= x - i and evens >= i:
				return True
	return False
t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	if solve(arr, x):
		print('Yes')
	else:
		print('No')


n = int(input())
count = 0
for x in range(n * 2):
	line = input()
	count += 1
	if count % 2 == 1:
		nList = line.split()
		n = int(nList[0])
		pick = int(nList[1])
	else:
		oddCount = 0
		evenCount = 0
		arr = line.split()
		for val in arr:
			val = int(val)
			if val % 2 == 1:
				oddCount += 1
			elif val % 2 == 0:
				evenCount += 1
		if oddCount > 0 and pick > 0:
			oddCount -= 1
			pick -= 1
			if pick > 0:
				if oddCount >= pick:
					if pick % 2 == 1:
						pick = 1
						if evenCount > 0:
							print('yes')
						else:
							print('no')
					else:
						print('yes')
				else:
					pick -= oddCount // 2 * 2
					if evenCount >= pick:
						print('yes')
					else:
						print('no')
			else:
				print('yes')
		else:
			print('no')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	b = 0
	c = 0
	d = 0
	if len(a) == 1:
		if a[0] % 2 == 0:
			b = 0
		else:
			b = 1
	else:
		for i in a:
			if i % 2 == 0:
				c += 1
			else:
				d += 1
		if x < c + d:
			if c and d > 1:
				b = 1
			elif c == 0 and x % 2 == 0:
				b = 0
			elif d == 0:
				b = 0
			else:
				b = 1
		elif d % 2 != 0:
			b = 1
		else:
			b = 0
	if b == 0:
		print('No')
	else:
		print('Yes')


def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = len([x for x in a if x % 2 == 1])
	even = n - odd
	for select_odd in range(1, odd + 1, 2):
		if x - select_odd >= 0 and x - select_odd <= even:
			print('Yes')
			return
	print('No')
t = int(input())
for tt in range(t):
	solve()


cases = int(input())
for case in range(cases):
	(length, x) = map(int, input().split())
	array = list(map(int, input().split()))
	temp = [0, 0]
	for num in array:
		if num % 2 == 0:
			temp[0] += 1
		else:
			temp[1] += 1
	if temp[1] == 0:
		print('No')
	elif temp[0] == 0 and temp[1] != 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x <= temp[0] + 1:
		print('Yes')
	else:
		uptil_now = temp[0] + 1
		needed = x - uptil_now
		if needed % 2 == 0:
			print('Yes')
		else:
			new_count = temp[1]
			if new_count % 2 == 0:
				new_count -= 1
			if x <= new_count + temp[0]:
				print('Yes')
			else:
				print('No')


t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().split(' ')]
	array = [int(x) for x in input().split(' ')]
	odd = 0
	even = 0
	for i in array:
		if i % 2:
			odd += 1
		else:
			even += 1
	ans = False
	for i in range(1, min(odd + 1, x + 1), 2):
		if x - i <= even:
			ans = True
	if ans:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(m, a) = map(int, input().split())
	l = list(map(int, input().split()))
	odd_count = len(list(filter(lambda a: a % 2 != 0, l)))
	even_count = m - odd_count
	f = False
	for i in range(1, min(odd_count, a) + 1, 2):
		if even_count >= a - i:
			f = True
			break
	if f:
		print('Yes')
	else:
		print('No')


a = []
t = int(input())
for i in range(t):
	b = []
	c = []
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	for j in range(n):
		if a[j] % 2 == 0:
			b.append(a[j])
		else:
			c.append(a[j])
	if len(c) == 0:
		print('No')
	elif x % 2 != 0 and x <= len(c):
		print('Yes')
	elif x % 2 == 0 and x <= len(c):
		if len(b) >= 1:
			print('Yes')
		else:
			print('No')
	elif len(c) % 2 != 0 and x >= len(c):
		print('Yes')
	elif x >= len(c) and len(c) % 2 == 0:
		k = x - len(c) + 1
		if k <= len(b):
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	even = 0
	odd = 0
	for num in l:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	temp = 1
	flag = False
	while temp <= odd and temp <= x:
		need = x - temp
		if even >= need:
			flag = True
			break
		temp += 2
	if flag:
		print('Yes')
	else:
		print('No')


t = int(input())
for q in range(t):
	[n, x] = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	o = []
	e = []
	for i in a:
		if i % 2 == 0:
			e.append(i)
		else:
			o.append(i)
	ec = len(e)
	oc = len(o)
	res = 'No'
	for i in range(1, oc + 1, 2):
		have = i
		need = x - i
		if ec >= need and need >= 0:
			res = 'Yes'
	print(res)


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for j in l:
		if j % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
	elif even == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif n == x:
		print('No' if odd % 2 == 0 else 'Yes')
	elif even >= x:
		print('Yes')
	else:
		temp = x - even
		if (x - even) % 2 == 0:
			if odd >= x - even:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')


t = int(input())

def fun(n, x, a):
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	for i in range(1, odd + 1, 2):
		for j in range(even + 1):
			if i + j == x:
				flag += 1
				break
		if flag:
			break
	if flag:
		print('Yes')
	else:
		print('No')
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = [int(i) for i in input().split()]
	fun(n, x, a)


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = map(lambda t: int(t) % 2, input().split())
	s = sum(a)
	print('No' if s == 0 or (n - s == 0 and x % 2 == 0) or (n == x and s % 2 == 0) else 'Yes')


t = int(input())
for i in range(t):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	a = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for k in a:
		if k % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd > x:
		odd = x
	if odd % 2 == 0:
		odd -= 1
	if odd + even < x or odd <= 0:
		print('No')
	else:
		print('Yes')


from math import *

def r1(t):
	return t(input().strip())

def r2(t):
	return [t(i) for i in input().strip().split()]

def r3(t):
	return [t(i) for i in input().strip()]
for _ in range(int(input())):
	(n, x) = r2(int)
	a = r2(int)
	co = 0
	ce = 0
	for i in a:
		if i % 2 == 0:
			ce += 1
		else:
			co += 1
	if x == n and co % 2 == 0 or co <= 0 or (ce == 0 and x % 2 == 0):
		print('No')
	else:
		print('Yes')


for ad in range(int(input())):
	(n, x) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	c = 0
	for i in l:
		if i % 2 == 1:
			c += 1
	if c == 0:
		print('No')
		continue
	if x != n:
		if x % 2 == 1:
			print('Yes')
		elif c != n:
			print('Yes')
		else:
			print('No')
	elif sum(l) % 2 == 1:
		print('Yes')
	else:
		print('No')


import os
import sys
from io import BytesIO, IOBase
from collections import Counter
from collections import deque
import heapq
import math
import statistics

def sin():
	return input()

def ain():
	return list(map(int, sin().split()))

def sain():
	return input().split()

def iin():
	return int(sin())
MAX = float('inf')
MIN = float('-inf')

def main():
	for _ in range(iin()):
		(n, x) = ain()
		l = ain()
		co = 0
		ce = 0
		for i in range(n):
			if l[i] & 1 == 1:
				co += 1
			else:
				ce += 1
		if co == 0:
			print('No')
		elif x == n:
			if co & 1 == 1:
				print('Yes')
			else:
				print('No')
		elif x == 1:
			if co >= 1:
				print('Yes')
			else:
				print('No')
		else:
			flag = 0
			for i in range(1, co + 1, 2):
				if x - i >= 0 and x - i <= ce:
					flag = 1
					break
			if flag == 1:
				print('Yes')
			else:
				print('No')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		o = 0
		k = 0
		for j in range(x - 1):
			k += a[j]
		if k % 2 == 0:
			for j in range(x - 1, n):
				if a[j] % 2 == 1:
					o = 1
					print('YES')
					break
			if o == 0:
				for j in range(x - 1):
					if a[j] % 2 == 1:
						o = 1
						print('YES')
						break
			if o == 0:
				print('NO')
		else:
			for j in range(x - 1, n):
				if a[j] % 2 == 0:
					o = 1
					print('YES')
					break
			if o == 0:
				for j in range(x - 1):
					if a[j] % 2 == 0:
						o = 1
						print('YES')
						break
			if o == 0:
				print('NO')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	ne = 0
	no = 0
	for i in l:
		if i % 2 == 0:
			ne = ne + 1
		else:
			no = no + 1
	if no == 0:
		print('No')
	elif ne == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		if no % 2 == 0:
			no = no - 1
		if x <= ne + no:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = [int(x) for x in input().split()]
	e = 0
	o = 0
	for i in range(n):
		if l[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if e == n:
		print('No')
		continue
	if o == n and x % 2 != 0:
		print('Yes')
		continue
	if o == n and x % 2 == 0:
		print('No')
		continue
	if o >= x and x % 2 != 0:
		print('Yes')
		continue
	f = 0
	for i in range(1, e + 1):
		x1 = x
		x1 -= i
		if o >= x1 and x1 % 2 != 0:
			f = 1
			break
	if f == 1:
		print('Yes')
	else:
		print('No')


import sys
import os
import heapq
import math
try:
	path = './file/input.txt'
	if os.path.exists(path):
		sys.stdin = open(path, 'r')
except:
	pass
t = int(input())

def printd(value):
	pass

def case():
	arr = list(map(int, input().split(' ')))
	(n, k) = (arr[0], arr[1])
	arr = list(map(int, input().split(' ')))
	odd = 0
	even = 0
	for number in arr:
		if number % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd % 2 == 0 and odd > 0:
		odd -= 1
	if odd == 0:
		print('No')
		return
	if k + 1 <= even:
		print('Yes')
		return
	if even > 0:
		k -= even
		if k % 2 == 0:
			k += 1
	if k <= odd and k % 2 == 1:
		print('Yes')
	else:
		print('No')
for _ in range(t):
	case()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(l, r) = (sum((a[i] % 2 == 1 for i in range(n))), sum((a[i] % 2 == 0 for i in range(n))))
	if l == 0:
		print('No')
	elif x == n:
		print(['No', 'Yes'][sum(a) % 2])
	elif r == 0:
		print(['No', 'Yes'][x % 2])
	else:
		print('Yes')


t = int(input())
ans = []
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	co = 0
	for i in l:
		if i % 2 != 0:
			co += 1
	if co == 0:
		ans.append('No')
		continue
	if n == x and co % 2 == 0:
		ans.append('No')
		continue
	if co == n and x % 2 == 0:
		ans.append('No')
		continue
	ans.append('Yes')
print('\n'.join(ans))


for _ in range(int(input())):
	(n, x) = map(int, input().strip().split())
	oc = sum(map(lambda k: int(k) % 2, input().strip().split()))
	ec = n - oc
	if x > ec + oc or (x == ec + oc and oc % 2 == 0) or oc == 0 or (x % 2 == 0 and ec == 0):
		print('No')
	else:
		print('Yes')


import sys
input = lambda : sys.stdin.readline().strip()
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in l:
		if i % 2:
			o += 1
		else:
			e += 1
	if o == 0:
		print('NO')
	else:
		x = x - 1
		o = o - 1
		o1 = o if o % 2 == 0 else o - 1
		if o1 + e >= x:
			if x % 2 == 1:
				if e > 0:
					print('YES')
				else:
					print('NO')
			else:
				print('YES')
		else:
			print('NO')


for _ in range(int(input())):
	(n, m) = map(int, input().split())
	l = list(map(int, input().split()))
	cc = 0
	e = 0
	for i in l:
		if i & 1:
			cc += 1
		else:
			e += 1
	if cc == 0:
		print('No')
	else:
		k = 1
		f = 0
		while k <= m:
			if m - k <= e and k <= cc:
				f = 1
				break
			k += 2
		if f:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even = []
	odd = []
	bol = True
	for i in a:
		if i % 2 == 0:
			even.append(i)
		else:
			odd.append(i)
	for i in range(1, len(odd) + 1, 2):
		if x - i <= len(even) and x - i >= 0:
			print('Yes')
			bol = False
			break
	if bol:
		print('No')


cases = int(input())
for i in range(cases):
	l1 = input().split(' ')
	n = int(l1[0])
	x = int(l1[1])
	odd = even = 0
	l2 = input().split(' ')
	arr = []
	for a in l2:
		arr.append(int(a))
	for j in arr:
		if j % 2 == 1:
			odd += 1
		else:
			even += 1
	if x % 2 == 1 and odd >= x:
		print('Yes')
		continue
	if odd == 0:
		print('No')
		continue
	possible = False
	for j in range(1, x, 2):
		need_even = x - j
		if odd >= j and even >= need_even:
			print('Yes')
			possible = True
			break
	if not possible:
		print('No')


def isPossible(arr, x):
	odds = 0
	i = 0
	while i < len(arr):
		if arr[i] % 2 == 0:
			arr[i] = 'p'
		else:
			arr[i] = 'i'
			odds += 1
		i += 1
	arr = sorted(arr)
	i = 0
	while i + x <= len(arr):
		sliced = arr[i:x + i]
		o = 0
		for l in sliced:
			if l == 'i':
				o += 1
		if o % 2 == 1:
			return True
		i += 1
	return False
t = int(input())
results = []
i = 0
while i < t:
	l = input().split()
	arr = list(map(int, input().split()))
	results.append(isPossible(arr, int(l[1])))
	i += 1
for result in results:
	if result:
		print('Yes')
	else:
		print('No')


def main():
	s = []
	t = int(input())
	for test in range(t):
		num_odd = 0
		num_even = 0
		n_x = input().split()
		n = int(n_x[0])
		x = int(n_x[1])
		integers = list(input().split())
		for i in range(len(integers)):
			number = int(integers[i])
			if number % 2 == 0:
				num_even += 1
			else:
				num_odd += 1
		if num_odd <= x:
			if num_odd % 2 != 0:
				s.append('Yes')
			elif n == x or num_odd == 0:
				s.append('No')
			else:
				s.append('Yes')
		elif x % 2 != 0:
			s.append('Yes')
		elif num_even % 2 != 0:
			s.append('Yes')
		elif num_even == 0:
			s.append('No')
		else:
			s.append('Yes')
	for sol in s:
		print(sol)
main()


import sys
import math
import heapq
import collections

def inputnum():
	return int(input())

def inputnums():
	return map(int, input().split())

def inputlist():
	return list(map(int, input().split()))

def inputstring():
	return [x for x in input()]

def inputmatrix(rows):
	arr2d = [[j for j in input().strip()] for i in range(rows)]
	return arr2d
t = int(input())
for q in range(t):
	(n, x) = inputnums()
	a = inputlist()
	evens = 0
	odds = 0
	for i in a:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds >= x:
		if evens == 0 and x % 2 == 0:
			print('No')
			continue
	else:
		if odds == 0:
			print('No')
			continue
		if odds % 2 == 0 and x - odds + 1 > evens:
			print('No')
			continue
	print('Yes')


ll = lambda : list(map(int, input().split()))
s = lambda : input()
v = lambda : map(int, input().split())
ii = lambda : int(input())
import math
for _ in range(int(input())):
	(n, x) = v()
	a = ll()
	e = 0
	o = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
		continue
	if x % 2 == 0 and e == 0:
		print('No')
		continue
	if o % 2 == 0:
		o -= 1
	if o + e >= x:
		print('Yes')
	else:
		print('No')


def process_test_case(i_t):
	(n, x) = map(int, input().split())
	a_vec = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a_vec[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	max_even = min(x - 1, even)
	min_odd = x - max_even
	if odd == 0:
		print('No')
	elif x == n and odd % 2 == 0:
		print('No')
	elif even == 0 and x % 2 == 0:
		print('No')
	else:
		print('Yes')
	return None
n_tests = int(input())
for i_test in range(1, n_tests + 1):
	process_test_case(i_test)


def ods(a, n, k):
	o = 0
	e = 0
	for i in range(n):
		if a[i] % 2 == 1:
			o = o + 1
		else:
			e = e + 1
	if o % 2 == 1 and k == o:
		print('Yes')
	elif o % 2 == 0 and e == 0 and (k >= o or k % 2 == 0):
		print('No')
	elif o % 2 == 1 and e + o >= k and (e != 0):
		print('Yes')
	elif o == 0:
		print('No')
	elif o % 2 == 0 and e + o == k:
		print('No')
	elif o % 2 == 0 and e + o > k:
		print('Yes')
	elif o % 2 == 1 and e == 0 and (k % 2 == 0):
		print('No')
	elif o % 2 == 1 and e == 0 and (k % 2 == 1):
		print('Yes')
t = int(input())
for i in range(t):
	n = input()
	k = list(map(int, n.split()))
	T = input()
	temp = list(map(int, T.split()))
	ods(temp, k[0], k[1])


for _ in range(int(input())):
	(length, x) = tuple((int(i) for i in input().split()))
	odd = 0
	even = 0
	for i in input().split():
		if int(i) & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
	elif x & 1:
		if odd >= x:
			print('Yes')
		elif x - odd & 1:
			if x - odd < even:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	elif even == 0:
		print('No')
	elif x - odd & 1:
		print('Yes')
	elif x - odd < even:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.buffer.readline

def prog():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		array = list(map(int, input().split()))
		odds = 0
		evens = 0
		for e in array:
			if e % 2 == 0:
				evens += 1
			else:
				odds += 1
		if odds % 2 == 0 and odds > 0:
			odds -= 1
		if odds == 0:
			print('No')
		elif x == odds:
			print('YES')
		elif x < odds:
			if x % 2 == 1:
				print('YES')
			elif evens > 0:
				print('YES')
			else:
				print('NO')
		else:
			x -= odds
			x -= evens
			if x <= 0:
				print('Yes')
			else:
				print('No')
prog()


t = int(input())
for case in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	sm = 0
	odds = 0
	evens = 0
	for e in arr:
		sm += e
		if e % 2 == 0:
			evens += 1
		else:
			odds += 1
	if x == n:
		if sm % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif odds == 0:
		print('No')
	elif evens == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


from math import ceil
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for e in l:
		if e % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		odd -= 1
		left = x - 1 - min(even, x - 1)
		if even != 0:
			left = ceil(left / 2) * 2
		if odd < left or left % 2 != 0:
			print('No')
		else:
			print('Yes')


t = int(input())
while t > 0:
	t = t - 1
	(n, x) = map(int, input().split())
	a = input()
	A = list(map(int, list(a.split())))
	o = 0
	e = 0
	for i in range(n):
		if A[i] % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	if o == 0:
		print('No')
	elif e == 0 and x % 2 == 0:
		print('No')
	else:
		flag = 0
		for i in range(1, o + 1, 2):
			if e >= x - i:
				print('Yes')
				flag = 1
				break
		if flag == 0:
			print('No')


from collections import Counter
import sys
ints = (int(x) for x in sys.stdin.read().split())
sys.setrecursionlimit(3000)

def main():
	ntc = next(ints)
	for tc in range(1, ntc + 1):
		(n, k) = (next(ints) for i in range(2))
		s = Counter((next(ints) % 2 for i in range(n)))
		if k == n:
			ans = s[1] % 2 == 1
		elif s[0] == 0:
			ans = k % 2 == 1
		else:
			ans = s[1] > 0
		print('Yes' if ans else 'No')
	return
main()


import sys

def read():
	return list(map(int, sys.stdin.readline().split()))
for t in range(int(input())):
	(n, x) = read()
	num = [0, 0]
	arr = read()
	for i in arr:
		num[i % 2] += 1
	done = 0
	for i in range(1, x + 1, 2):
		if i > num[1] or x - i > num[0]:
			continue
		print('Yes')
		done = 1
		break
	if not done:
		print('No')


t = int(input())
while t:
	t -= 1
	(n, m) = map(int, input().split())
	l = list(map(int, input().split()))
	o = 0
	e = 0
	f = 0
	for i in l:
		if i & 1:
			o += 1
		else:
			e += 1
	for i in range(1, m + 1):
		if i > o:
			continue
		elif m - i > e:
			continue
		elif i & 1:
			f = 1
			break
	if f:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline
for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	l = 0
	r = 0
	for i in a:
		if i % 2:
			l += 1
		else:
			r += 1
	ans = 'No'
	if l == 0:
		ans = 'No'
	else:
		for i in range(1, min(l + 1, x + 1), 2):
			if i + r >= x:
				ans = 'Yes'
	print(ans)


t = int(input())
for i in range(t):
	line = input()
	pui = line.split()
	x = int(pui[1])
	line = input()
	lis = line.split()
	lis = [int(j) for j in lis]
	even = odd = 0
	for j in lis:
		if j % 2 == 1:
			odd = odd + 1
		else:
			even = even + 1
	if odd == 0:
		print('No')
	elif odd >= x:
		if x % 2 == 1:
			print('Yes')
		elif even != 0:
			print('Yes')
		else:
			print('No')
	elif odd % 2 == 1:
		ans = x - odd
		if even >= ans:
			print('Yes')
		else:
			print('No')
	else:
		ans = x - odd + 1
		if even >= ans:
			print('Yes')
		else:
			print('No')


for i in range(int(input())):
	(n, t) = tuple(map(int, input().split()))
	a = list(map(int, input().split()))
	x = 0
	y = 0
	for j in range(n):
		if a[j] % 2 == 0:
			x += 1
		else:
			y += 1
	if y > t:
		if t % 2 != 0:
			print('Yes')
		elif t % 2 == 0 and x >= 1:
			print('Yes')
		else:
			print('No')
	elif n == t:
		if sum(a) % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif y % 2 == 0:
		if y - 1 + x >= t and y > 0:
			print('Yes')
		else:
			print('No')
	elif y % 2 != 0:
		if x + y >= t:
			print('Yes')
		else:
			print('No')


import sys
import math
import collections

def set_debug(debug_mode=False):
	if debug_mode:
		fin = open('input.txt', 'r')
		sys.stdin = fin
t = int(input())
for ti in range(1, t + 1):
	(n, x) = list(map(int, input().split()))
	an = list(map(int, input().split()))
	odd = 0
	even = 0
	for a in an:
		if a % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
	else:
		find = False
		for i in range(1, x + 1, 2):
			if i <= odd and x - i <= even:
				find = True
				break
		if find:
			print('Yes')
		else:
			print('No')


tc = int(input())
for _ in range(tc):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	countOdd = 0
	countEven = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			countEven += 1
		else:
			countOdd += 1
	flag = False
	for i in range(1, min(countOdd, x) + 1, 2):
		need = x - i
		have = countEven
		if have >= need:
			flag = True
	if flag:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ans = 0
	o = []
	e = []
	for i in a:
		if i % 2 != 0:
			o.append(i)
		else:
			e.append(i)
	if len(o) == 0:
		print('No')
	elif n == x:
		if len(o) % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif len(o) == n:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


def list_input():
	return list(map(int, input().split()))

def multiple_input():
	return map(int, input().split())
for _ in range(int(input())):
	(n, x) = multiple_input()
	a = list_input()
	(e, o) = (0, 0)
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if e >= x:
		if o >= 1:
			ans = 'Yes'
		else:
			ans = 'No'
	elif x % 2 == 0:
		if e == 0:
			ans = 'No'
		else:
			if e % 2 == 0:
				x -= e - 1
			else:
				x -= e
			if o >= x:
				ans = 'Yes'
			else:
				ans = 'No'
	else:
		if e % 2 == 0:
			x -= e
		elif e > 0:
			x -= e - 1
		if o >= x:
			ans = 'Yes'
		else:
			ans = 'No'
	print(ans)


for _ in range(int(input())):
	(n, x) = map(int, input().split(' '))
	a = [i for i in map(int, input().split(' '))]
	cnt1 = 0
	cnt2 = 0
	for i in a:
		if i % 2 == 0:
			cnt1 += 1
		else:
			cnt2 += 1
	if cnt2 > 0:
		x -= 1
		m = min((cnt2 - 1) // 2 * 2, x)
		m -= m % 2
		x -= m
		x -= cnt1
		if x <= 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


from math import *
import heapq
from dataclasses import dataclass, field
from typing import Any
m = []
nn = []
t = int(input())
for i in range(t):
	nn.append(list(map(int, input().split())))
	m.append(list(map(int, input().split())))
for i in range(t):
	n = nn[i][0]
	x = nn[i][1]
	q = m[i]
	odd = 0
	for j in range(n):
		if q[j] % 2 == 1:
			odd += 1
	if odd > 0 and n - odd > 0 and (x != n):
		print('Yes')
		continue
	if odd == 0:
		print('No')
		continue
	if n - odd == 0:
		if x % 2 == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	if x == n and odd % 2 == 1:
		print('Yes')
		continue
	if x == n and odd % 2 == 0:
		print('No')
		continue


for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	s = 0
	k = 0
	for q in a:
		if q % 2 == 0:
			s += 1
		else:
			k += 1
	if k > x:
		k = x
	if k % 2 == 0 and k > 0:
		k -= 1
	if k == 0:
		print('No')
	elif k + s >= x:
		print('Yes')
	else:
		print('No')


from sys import stdin

def iinput():
	return int(stdin.readline())

def sinput():
	return input()

def minput():
	return map(int, stdin.readline().split())

def linput():
	return list(map(int, stdin.readline().split()))
t = iinput()
while t:
	t -= 1
	(n, x) = minput()
	a = linput()
	(odd, even) = (0, 0)
	for i in range(n):
		if a[i] & 1:
			odd += 1
		else:
			even += 1
	ans = 'No'
	for i in range(1, x + 1, 2):
		if i <= odd and x - i <= even:
			ans = 'Yes'
			break
	print(ans)


t = int(input())
answers = []
my_storage = {'odds': 0, 'evens': 0}
for i in range(t):
	(n, x) = [int(j) for j in input().split()]
	a = [int(j) for j in input().split()]
	ans = None
	if x > n:
		ans = 'No'
		continue
	idx = 0
	while True:
		num = a[idx]
		if num % 2 == 0:
			my_storage['evens'] += 1
		else:
			my_storage['odds'] += 1
		idx += 1
		x -= 1
		if not x:
			break
	if my_storage['odds'] % 2 == 1:
		ans = 'Yes'
	elif idx == n:
		ans = 'No'
	else:
		is_even_trans = is_odd_trans = False
		if my_storage['odds'] >= 2:
			is_odd_trans = True
		if my_storage['evens'] >= 1:
			is_even_trans = True
		ans = 'No'
		while True:
			num = a[idx]
			if num % 2 == 0:
				if is_odd_trans:
					ans = 'Yes'
			elif is_even_trans:
				ans = 'Yes'
			idx += 1
			if idx == n or ans == 'Yes':
				break
	answers.append(ans)
	my_storage = {'odds': 0, 'evens': 0}
for i in answers:
	print(i)


import math
import sys
from sys import stdin
input = sys.stdin.readline
for _ in range(int(input())):
	(n, k) = [int(j) for j in input().split()]
	arr = [int(j) for j in input().split()]
	for i in range(n):
		arr[i] = arr[i] % 2
	even = arr.count(0)
	odd = n - even
	if odd == 0:
		print('No')
	elif odd == n and k % 2 == 0:
		print('No')
	elif odd == n and k % 2 == 1:
		print('Yes')
	elif n == k:
		if odd % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif k % 2 == 0:
		if even >= k and odd > 0:
			print('Yes')
		elif even >= k and odd == 0:
			print('No')
		elif even < k:
			if even % 2 == 0 and odd >= k - (even - 1):
				print('Yes')
			elif even % 2 == 0 and odd < k - (even - 1):
				print('No')
			elif even % 2 == 1 and odd >= k - even:
				print('Yes')
			else:
				print('No')
	elif even >= k - 1 and odd > 0:
		print('Yes')
	elif even >= k - 1 and odd == 0:
		print('No')
	elif even < k:
		if even % 2 == 1 and odd >= k - even + 1:
			print('Yes')
		elif even % 2 == 1 and odd < k - even + 1:
			print('No')
		elif even % 2 == 0 and odd >= k - even:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	oddcount = len(list(filter(lambda x: x & 1, list(map(int, input().split())))))
	print('YNEOS'[oddcount == 0 or (not oddcount & 1 and x == n) or (oddcount == n and (not x & 1))::2])


from itertools import combinations

def solve(arr, x):
	if arr.count(1) == 0:
		return 'NO'
	res = combinations(arr, x)
	for f in res:
		if sum(f) % 2:
			return 'YES'
	return 'NO'
a = int(input())
while a:
	(n, x) = list(map(int, input().split()))
	arr = [int(f) % 2 for f in input().split()]
	print(solve(arr, x))
	a -= 1


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	oc = len(list(filter(lambda x: x % 2 != 0, l)))
	ec = len(list(filter(lambda x: x % 2 == 0, l)))
	if oc < x:
		if oc >= 1 and oc % 2 != 0 and (x == n):
			print('yes')
		elif x < n and oc >= 1:
			print('yes')
		else:
			print('no')
	if oc == x:
		if ec >= 1 and oc % 2 == 0:
			print('yes')
		elif oc % 2 != 0:
			print('yes')
		else:
			print('no')
	if oc > x:
		if x % 2 != 0:
			print('yes')
		elif ec >= 1:
			print('yes')
		else:
			print('no')


T = int(input())
while T != 0:
	(x, n) = map(int, input().split())
	nums = list(map(int, input().split()))
	T -= 1
	if x == 1:
		if nums[0] % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x == n:
		if sum(nums) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif n > x:
		print('No')
	else:
		total_even = len([num for num in nums if num % 2 == 0])
		total_odd = len(nums) - total_even
		if total_odd == 0:
			print('No')
			continue
		elif total_even != 0:
			odd_needed = n - 1 - total_even
			total_odd -= 1
			if total_odd >= odd_needed:
				print('Yes')
			else:
				print('No')
		elif n % 2 == 1:
			print('Yes')
		else:
			print('No')


try:
	t = int(input())
	while t > 0:
		(n, x) = map(int, input().split())
		l = list(map(int, input().split()))
		(even, flag, odd) = (0, 0, 0)
		for i in range(n):
			if l[i] % 2 == 0:
				even += 1
			else:
				odd += 1
		for i in range(1, odd + 1, 2):
			if i > x:
				break
			if x - i <= even:
				flag = 1
		if flag:
			print('Yes')
		else:
			print('No')
		t = t - 1
except:
	pass


def wa(l, b):
	odd = 0
	even = 0
	f = len(l)
	for i in range(0, len(l), 1):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == f and b % 2 != 0:
		print('Yes')
	elif odd > b and b % 2 != 0:
		print('Yes')
	elif b == 1 and odd >= 1:
		print('Yes')
	elif odd >= 1 and even >= 1:
		print('Yes')
	else:
		print('No')
import math
k = int(input())
while k > 0:
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	if a == b:
		if sum(l) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		wa(l, b)
	k -= 1


from sys import stdin
from math import ceil
for _ in range(int(stdin.readline())):
	(n, x) = map(int, stdin.readline().split())
	arr = list(map(int, stdin.readline().split()))
	(od, ev) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			ev += 1
		else:
			od += 1
	if x == n:
		if sum(arr) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		c = 0
		for i in range(1, x + 1, 2):
			if od >= i and ev >= x - i:
				c = 1
				break
		if c == 1:
			print('YES')
		else:
			print('NO')


t = int(input())
for i in range(t):
	C = []
	B = []
	ans = 0
	(n, x) = list(map(int, input().split()))
	A = list(map(int, input().split()))
	for j in range(n):
		if A[j] % 2 == 0:
			B.append(A[j])
		else:
			C.append(A[j])
	k = len(C)
	a = len(B)
	if x <= k:
		if x % 2 != 0 or a >= 1:
			ans += 1
	elif k < x and k != 0:
		if k % 2 != 0 and a >= x - k:
			ans += 1
		elif k % 2 == 0 and a >= x - k + 1:
			ans += 1
	if ans == 0:
		print('No')
	else:
		print('Yes')


from sys import stdin
for case in range(int(stdin.readline())):
	(n, x) = [int(a) for a in stdin.readline().split()]
	nums = [int(a) for a in stdin.readline().split()]
	odds = 0
	for a in nums:
		if a % 2 == 1:
			odds += 1
	valid = False
	if x != n:
		if odds != 0 and odds != n:
			valid = True
		elif odds != 0 and x % 2 == 1:
			valid = True
	elif odds % 2 == 1:
		valid = True
	if valid:
		print('Yes')
	else:
		print('No')


import sys
import math
from collections import defaultdict as dd
mod = 1000000007
T = 1
T = int(sys.stdin.readline())
for _ in range(T):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	od = 0
	s = sum(l)
	ev = 0
	for i in l:
		if i & 1:
			od += 1
		else:
			ev += 1
	if od == 0:
		print('No')
	elif n == x:
		if s & 1:
			print('Yes')
		else:
			print('No')
	elif x & 1:
		if od >= x:
			print('Yes')
		elif od:
			print('Yes')
		else:
			print('No')
	elif ev > 0 and od > 0:
		print('Yes')
	else:
		print('No')


testcases = int(input())
for testcase in range(testcases):
	temparr = input()
	temparr = temparr.split()
	n = int(temparr[0])
	x = int(temparr[1])
	odd = 0
	even = 0
	temparr = input()
	temparr = temparr.split()
	for i in temparr:
		v = int(i)
		if v & 1 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if odd == 0 and x >= 1:
		print('No')
		continue
	if odd & 1 == 0:
		odd -= 1
	if x & 1 == 0:
		x -= 1
		even -= 1
	if even < 0:
		print('No')
		continue
	if even + odd >= x and odd >= 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = [int(x) for x in input().split(' ')]
	l = [int(x) for x in input().split(' ')]
	ev = 0
	od = 0
	for i in l:
		if i % 2:
			od += 1
		else:
			ev += 1
	if od == 0:
		print('No')
		continue
	if x % 2 != 0 and od >= x:
		print('Yes')
		continue
	tp = od
	f = 0
	while tp > 0:
		if tp % 2 != 0:
			if x - tp <= ev and x - tp > 0:
				print('Yes')
				f = 1
				break
		tp -= 1
	if f == 0:
		print('No')


T = int(input())
for _ in range(T):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for i in range(n):
		if l[i] % 2:
			o += 1
		else:
			e += 1
	flag = 0
	if x % 2:
		if o >= x:
			flag = 1
		elif o % 2:
			if e >= x - o:
				flag = 1
		elif e >= x - o + 1 and o >= 1:
			flag = 1
	else:
		if e % 2 == 0:
			e -= 1
		if o % 2 == 0:
			o -= 1
		if o + e >= x and e >= 1 and (o >= 1):
			flag = 1
	if flag == 1:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = [int(x) for x in input().split()]
	(o, e) = (0, 0)
	arr = [int(x) for x in input().split()]
	for a in arr:
		o += a % 2
		e += (a + 1) % 2
	if o == 0:
		print('No')
		continue
	f = 0
	for i in range(x + 1):
		(co, ce) = (i, x - i)
		f += co <= o and ce <= e and co % 2
	if f:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	o = []
	e = []
	for i in l:
		if i % 2 == 0:
			e.append(i)
		else:
			o.append(i)
	if len(o) == 0:
		print('No')
	elif len(e) == 0:
		if x % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		if x == 1:
			ans = [o[0]]
		elif len(o) >= x:
			if x % 2:
				ans = o[:x]
			else:
				ans = o[:x - 1] + [e[0]]
		else:
			t = len(o) % 2
			if t:
				ans = o + e[:x - len(o)]
			else:
				ans = o[:-1] + e[:x - (len(o) - 1)]
		if sum(ans) % 2 and len(ans) == x:
			print('Yes')
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = [int(x) for x in input().split()]
	odd_count = 0
	even_count = 0
	diff = 0
	for i in arr:
		if i % 2 != 0:
			odd_count += 1
		else:
			even_count += 1
	i = 1
	k = x - 1
	flag = False
	while i <= x:
		if odd_count >= i and even_count >= k:
			print('Yes')
			flag = True
			break
		else:
			i = i + 2
			k = k - 2
	if flag == False:
		print('No')


from sys import stdin
input = stdin.readline
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	a = [int(x) for x in input().split()]
	(odd, even) = (0, 0)
	for x in a:
		if x % 2:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	k -= 1
	odd -= 1
	if k <= even:
		print('Yes')
		continue
	k -= even
	if k % 2 == 0:
		print('Yes')
		continue
	elif even > 0:
		k += 1
	if k <= odd and k % 2 == 0:
		print('Yes')
	else:
		print('No')


t = int(input())
res = []
for i in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	odd_count = sum(map(lambda j: j % 2 == 1, a))
	if odd_count == 0:
		result = 'No'
	elif odd_count == n and x % 2 == 0:
		result = 'No'
	elif x == n and odd_count % 2 == 0:
		result = 'No'
	else:
		result = 'Yes'
	res.append(result)
print('\n'.join(res))


from sys import stdin, stdout
int_in = lambda : int(stdin.readline())
arr_in = lambda : [int(x) for x in stdin.readline().split()]
mat_in = lambda rows: [arr_in() for y in range(rows)]
str_in = lambda : stdin.readline().strip()
out = lambda o: stdout.write('{}\n'.format(o))
arr_out = lambda o: out(' '.join(map(str, o)))
bool_out = lambda o: out('YES' if o else 'NO')
tests = lambda : range(1, int_in() + 1)
case_out = lambda i, o: out('Case #{}: {}'.format(i, o))

def solve(n, x, a):
	count_odd = sum(map(lambda x: x % 2 == 1, a))
	count_even = len(a) - count_odd
	if count_odd == 0:
		return False
	count_odd -= 1
	x -= 1
	while x > 0:
		if count_odd < 0 or count_even < 0:
			return False
		if x >= 2 and count_odd >= 2:
			count_odd -= 2
			x -= 2
		else:
			count_even -= 1
			x -= 1
	return count_odd >= 0 and count_even >= 0
for i in tests():
	(n, x) = arr_in()
	a = arr_in()
	out('Yes' if solve(n, x, a) else 'No')


def solve(a, n, x):
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd > 0:
		x -= 1
		odd -= 1
	else:
		return 'No'
	while x > 0:
		if x > 1 and odd > 1:
			x -= 2
			odd -= 2
		elif even > 0:
			x -= even
			even = 0
		else:
			break
	if x <= 0:
		return 'Yes'
	return 'No'
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	res = solve(a, n, x)
	print(res)


def solve(n, x, arr):
	(o, e) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		return 'no'
	if e == 0 and x % 2 == 0:
		return 'no'
	diff = x - e
	if diff < 0:
		return 'yes'
	if diff % 2 == 0:
		if o >= diff + 1:
			return 'yes'
		return 'no'
	else:
		if o >= diff:
			return 'yes'
		return 'no'
t = int(input())
for _ in range(t):
	inp = input().split()
	(n, x) = (int(inp[0]), int(inp[1]))
	arr = [int(d) for d in input().split()]
	print(solve(n, x, arr))


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	odd = 0
	for i in lst:
		if i % 2 != 0:
			odd += 1
	if odd == 0:
		print('NO')
	else:
		even = n - odd
		if x % 2 == 0 and even == 0:
			print('NO')
		else:
			if odd % 2 == 0:
				odd -= 1
			if even + odd >= x:
				print('YES')
			else:
				print('NO')


q = int(input())
for w in range(q):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	kch = 0
	kn = 0
	for i in range(n):
		if a[i] % 2 == 0:
			kch += 1
		else:
			kn += 1
	for i in range(1, kn + 1, 2):
		if kch >= x - i and i <= x:
			print('Yes')
			break
	else:
		print('No')


from collections import deque
from sys import stdin, stdout
import math
input = stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	chet = 0
	nechet = 0
	for i in arr:
		if i % 2:
			nechet += 1
		else:
			chet += 1
	have = min(1, nechet)
	nechet -= 1
	if have == 0:
		print('No')
		continue
	while have + 2 <= x:
		if nechet < 2:
			break
		have += 2
		nechet -= 2
	have += min(max(0, x - have), chet)
	print('Yes' if have == x else 'No')


import math

def main(args):
	t = int(input())
	for test in range(t):
		add = input().split(' ')
		n = int(add[0])
		x = int(add[1])
		vals = input().split(' ')
		for i in range(n):
			vals[i] = int(vals[i])
		kinds = {'even': 0, 'odd': 0}
		for i in vals:
			if i % 2 == 0:
				kinds['even'] += 1
			else:
				kinds['odd'] += 1
		state = 0
		for i in range(min(x, kinds['even']) + 1):
			if (x - i) % 2 == 1 and kinds['odd'] >= x - i:
				print('Yes')
				state = 1
				break
		if state == 0:
			print('No')
import sys
sys.exit(main(sys.argv))


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	o = 0
	t1 = 0
	flag = 0
	t2 = 0
	for i in a:
		if i % 2 != 0:
			t1 += 1
		else:
			t2 += 1
	if x % 2 == 0:
		if t2 == 0 or t1 == 0:
			flag = 1
		elif t1 >= x:
			pass
		elif t1 % 2 == 0:
			if t2 < x - t1 + 1:
				flag = 1
		elif t2 < x - t1:
			flag = 1
	elif t1 == 0:
		flag = 1
	elif t1 >= x:
		pass
	elif t1 % 2 == 0:
		if t2 < x - t1 + 1:
			flag = 1
	elif t2 < x - t1:
		flag = 1
	if flag == 1:
		print('No')
	else:
		print('Yes')


test = int(input())
for t in range(test):
	(leng, x) = input().split(' ')
	x = int(x)
	arr = input().split(' ')
	arr = [int(n) for n in arr]
	even = len([2 for n in arr if n % 2 == 0])
	odd = len([1 for n in arr if n % 2 == 1])
	odd = odd if odd % 2 == 1 else odd - 1
	if odd > 0 and even + odd >= (x + 1 if odd % 2 == 0 else x) and (even > 0 if x % 2 == 0 else True) and (odd > 0 if x % 2 == 1 else True):
		print('YES')
	else:
		print('NO')


class Solution:

	def __init__(self):
		(self.n, self.x) = [int(x) for x in input().split()]
		self.a = [int(x) for x in input().split()]

	def solve_and_print(self):
		i = (1 << self.x) - 1
		if not all((x % 2 == 0 for x in self.a)):
			while i < 1 << self.n:
				(sum, x) = (0, 0)
				for (j, aj) in enumerate(self.a):
					if 1 << j & i:
						sum += aj
						x += 1
				if sum & 1:
					print('YES')
					return
				i = self.snoob(i)
		print('NO')

	def snoob(self, x):
		next = 0
		right_1 = x & -x
		next_higher_1_bit = x + right_1
		right_1s_pattern = x ^ next_higher_1_bit
		right_1s_pattern = right_1s_pattern // right_1
		right_1s_pattern = right_1s_pattern >> 2
		next = next_higher_1_bit | right_1s_pattern
		return next
for _ in range(int(input())):
	Solution().solve_and_print()


for t in range(int(input())):
	(n, x) = map(int, input().split(' '))
	arr = [*map(int, input().split(' '))]
	flag = 0
	only_even = [num for num in arr if num % 2 == 0]
	c_even = len(only_even)
	c_odd = n - c_even
	for i in range(1, min(c_odd, x) + 1, 2):
		if c_even >= x - i:
			flag = 1
	if flag == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = [int(x) for x in input().split()]
	a = [int(a) for a in input().split()]
	even = len([x for x in a if x % 2 != 0])
	odd = n - even
	if x == n and even % 2 == 0:
		print('NO')
	elif even == 0:
		print('NO')
	elif even == n and x % 2 == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for _ in range(t):
	(n, k) = [int(c) for c in input().split()]
	arr = [int(c) for c in input().split()]
	oddcount = 0
	evencount = 0
	for i in arr:
		if i % 2 == 0:
			evencount += 1
		else:
			oddcount += 1
	if oddcount == 0:
		print('No')
	elif k == n:
		summ = sum(arr)
		if summ % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif evencount == 0:
		if k % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


import os
os_input = os.read(0, int(10000000.0)).split()
os_input_pos = -1
answer_list = []

def read_s():
	global os_input_pos
	os_input_pos += 1
	return os_input[os_input_pos].decode()

def read_i():
	return int(read_s())

def write_s(v):
	answer_list.append(v)

def write_i(v):
	write_s(str(v))

def print_ans():
	os.write(1, '\n'.join(answer_list).encode())
	os.write(1, '\n'.encode())
T = read_i()
while T:
	T -= 1
	n = read_i()
	x = read_i()
	a = [read_i() % 2 for i in range(n)]
	if x % 2:
		write_s('Yes' if a.count(1) and (x < n or a.count(1) % 2) else 'No')
	else:
		write_s('Yes' if a.count(1) and a.count(0) and (x < n or a.count(1) % 2) else 'No')
print_ans()


from math import *
from copy import *
t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	l = sorted(l)
	odd = []
	even = []
	for j in range(len(l)):
		if l[j] % 2 == 0:
			even.append(l[j])
		else:
			odd.append(l[j])
	if len(odd) == 0:
		print('No')
	elif len(even) == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		e = len(even)
		o = len(odd)
		if e >= x - 1:
			print('Yes')
		else:
			y = x - e
			if y % 2 == 1:
				print('Yes')
			else:
				y += 1
				if o >= y:
					print('Yes')
				else:
					print('No')


from sys import stdin, exit, setrecursionlimit
from math import *
from collections import deque
setrecursionlimit(10000000)
input = stdin.readline
lmi = lambda : list(map(int, input().split()))
mi = lambda : map(int, input().split())
si = lambda : input().strip('\n')
ssi = lambda : input().strip('\n').split()
for _ in range(int(input())):
	(n, x) = mi()
	a = [0, 0]
	arr = lmi()
	for i in arr:
		a[i % 2] += 1
	a[1] -= 1
	x -= 1
	while x > 0:
		if x > 1 and a[1] > 1:
			a[1] -= 2
			x -= 2
		else:
			a[0] -= 1
			x -= 1
	if a[0] >= 0 and a[1] >= 0:
		print('Yes')
	else:
		print('No')


TC = int(input())
for cn in range(TC):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))[:n]
	odd = 0
	for i in a:
		if i % 2 == 1:
			odd += 1
	if odd == 0 or (x % 2 == 0 and odd == n) or (x == n and odd % 2 == 0):
		print('NO')
	else:
		print('YES')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(x) for x in input().split()]
	odd = 0
	for i in a:
		if i % 2 == 1:
			odd += 1
	even = n - odd
	check = True
	for i in range(1, min(odd, x) + 1, 2):
		if x - i <= even:
			print('Yes')
			check = False
			break
	if check:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = [int(n) for n in input().split()]
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2 != 0:
			print('YES')
		else:
			print('NO')
	else:
		s = [i for i in a if i % 2 == 0]
		print('YES' if 1 <= len(s) < n or (len(s) == 0 and x % 2) else 'NO')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	L = list(map(int, input().split()))
	if n == x:
		ans = sum(L)
		if ans & 1 == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	odd = 0
	even = 0
	for i in range(n):
		if L[i] & 1 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	for i in range(1, odd + 1, 2):
		if x - i <= even:
			if x & 1 == 0 and even == 0:
				print('No')
				break
			else:
				print('Yes')
				break
	else:
		print('No')


t = int(input())
for i in range(t):
	l = [int(i) for i in input().split()]
	n = l[0]
	x = l[1]
	a = [int(i) for i in input().split()]
	o = [i for i in a if i % 2 != 0]
	lo = len(o)
	if lo == 0:
		print('No')
	elif n == x:
		if lo % 2 == 0:
			print('NO')
		else:
			print('yes')
	elif lo == n:
		if x % 2 == 0:
			print('no')
		else:
			print('yes')
	elif lo > 0:
		print('yes')
	else:
		print('no')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	flag = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if even == 0:
		if odd >= k and k % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	i = 1
	while i <= odd:
		if odd >= i and even >= k - i:
			print('Yes')
			flag = 1
			break
		i += 2
	if flag != 1:
		print('No')


for x in range(int(input())):
	(x, k) = map(int, input().split())
	lst = sorted(list(map(int, input().split())))
	s = 0
	for i in lst:
		if i % 2 != 0:
			s = s + 1
	if s == 0 or (s == x and k % 2 == 0) or (x == k and s % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	odd = sum(map(lambda v: int(int(v) % 2 != 0), input().split()))
	even = n - odd
	cor = int(odd % 2 == 0) + int(even % 2 == 0 and x % 2 == 0)
	if odd > 0 and n - cor >= x and (not (even == 0 and x % 2 == 0)):
		print('YES')
	else:
		print('NO')


test = int(input())
test_arr = []
for _ in range(test):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd_count = 0
	for a in arr:
		if a % 2 != 0:
			odd_count += 1
	even_count = n - odd_count
	if odd_count >= 1:
		ans = 'Yes'
	else:
		ans = 'No'
	if x % 2 == 0:
		if odd_count >= x:
			if even_count <= 0:
				ans = 'No'
		elif odd_count < x and odd_count % 2 == 0:
			if even_count <= x - odd_count:
				ans = 'No'
	elif odd_count % 2 == 0 and odd_count < x:
		if even_count <= x - odd_count:
			ans = 'No'
	test_arr.append(ans)
for t in test_arr:
	print(t)


T = int(input())
for _ in range(0, T):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	e = 0
	o = 0
	c = 0
	for i in range(0, n):
		if A[i] % 2 == 0:
			e += 1
		else:
			o += 1
	a = min(x, o)
	for i in range(1, a + 1, 2):
		b = x - i
		if b <= e:
			c = 1
	if c == 1:
		print('Yes')
	else:
		print('No')


def odd_selection(array, x):
	even = 0
	odd = 0
	for i in array:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0 or even + odd < x:
		print('NO')
	elif even + odd == x and (x - even) % 2 == 0:
		print('NO')
	elif even == 0 and x % 2 == 0:
		print('NO')
	else:
		print('YES')
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	array = list(map(int, input().split()))
	odd_selection(array, x)


import math

def check(arr, x, n):
	odds = 0
	evens = 0
	for i in arr:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	if x == n:
		if odds % 2 != 0:
			return 'Yes'
		else:
			return 'No'
	if x % 2 == 0:
		if evens > 0 and odds > 0:
			return 'Yes'
		else:
			return 'No'
	elif odds > 0:
		return 'Yes'
	else:
		return 'No'
t = int(input())
while t:
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	print(check(arr, x, n))
	t -= 1


import math
t = int(input())
for _ in range(t):
	(n, x) = [int(y) for y in input().split()]
	arr = list(map(int, input().split()))
	odd_num = 0
	even_num = 0
	for i in range(len(arr)):
		if arr[i] & 1:
			odd_num += 1
		else:
			even_num += 1
	d = 0
	for i in range(1, min(odd_num, x) + 1, 2):
		if x - i <= even_num:
			d += 1
			print('Yes')
			break
	if d == 0:
		print('No')


def strLine():
	return input().split()

def lotInt():
	return map(int, input().split())

def readInt():
	return int(input())

def readStr():
	return input()

def readArr():
	arr = input()
	return [int(n) for n in arr.split()]

def __main():
	t = readInt()
	while t:
		t -= 1
		(x, y) = lotInt()
		(num0, num1) = (0, 0)
		a = readArr()
		for i in range(x):
			tmp = a[i]
			if tmp & 1:
				num1 += 1
			else:
				num0 += 1
		if num1 == 0:
			print('No')
			continue
		sum = min(y, num1)
		if sum % 2 == 0:
			sum -= 1
		if sum + num0 >= y:
			print('Yes')
		else:
			print('No')
__main()


import sys
I = sys.stdin.readline
ans = ''
for _ in range(int(I())):
	(n, x) = map(int, I().split())
	arr = list(map(int, I().split()))
	odd = 0
	even = 0
	for i in arr:
		if i % 2:
			odd += 1
		else:
			even += 1
	if x % 2:
		if odd == 0 or (odd % 2 == 0 and x == n):
			ans += 'NO\n'
		else:
			ans += 'YES\n'
	elif even == 0 or odd == 0 or (odd % 2 == 0 and x == n):
		ans += 'NO\n'
	else:
		ans += 'YES\n'
print(ans)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even = 0
	odd = 0
	for elem in a:
		if elem % 2:
			odd += 1
		else:
			even += 1
	if odd + even > x:
		if not x % 2:
			if odd and even:
				print('Yes')
			else:
				print('No')
		elif odd:
			print('Yes')
		else:
			print('No')
	elif odd % 2:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if not odd:
		print('No')
	else:
		odd -= 1
		x -= 1
		re_even = x
		re_odd = 0
		while re_even >= 0:
			if even >= re_even and odd >= re_odd:
				print('Yes')
				break
			re_odd += 2
			re_even -= 2
		else:
			print('No')


from __future__ import division, print_function
import os
import sys
from io import BytesIO, IOBase
from math import sqrt, floor, factorial, gcd, log
from collections import deque, Counter, defaultdict
from itertools import permutations, combinations
from math import gcd
from bisect import bisect

def solution():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		e = []
		o = []
		for i in range(n):
			if a[i] % 2 == 0:
				e.append(a[i])
			else:
				o.append(a[i])
		if len(o) == 0:
			print('No')
		elif x % 2 == 0 and len(o) == n:
			print('No')
		elif x == n and len(o) % 2 == 0:
			print('No')
		else:
			print('Yes')
solution()
if sys.version_info[0] < 3:
	from __builtin__ import xrange as range
	from future_builtins import ascii, filter, hex, map, oct, zip
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')

def print(*args, **kwargs):
	(sep, file) = (kwargs.pop('sep', ' '), kwargs.pop('file', sys.stdout))
	at_start = True
	for x in args:
		if not at_start:
			file.write(sep)
		file.write(str(x))
		at_start = False
	file.write(kwargs.pop('end', '\n'))
	if kwargs.pop('flush', False):
		file.flush()
if sys.version_info[0] < 3:
	(sys.stdin, sys.stdout) = (FastIO(sys.stdin), FastIO(sys.stdout))
else:
	(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
read = lambda : list(map(int, input().strip().split(' ')))


import sys
input = sys.stdin.readline
f = lambda : list(map(int, input().split()))
for _ in range(int(input())):
	(n, x) = f()
	a = f()
	odd = len(list(filter(lambda p: p % 2, a)))
	evn = len(a) - odd
	if evn:
		if odd and odd % 2 == 0:
			odd -= 1
		print('YES' if odd and evn + odd >= x else 'NO')
	else:
		print('NO' if x % 2 == 0 else 'YES')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(lambda x: int(x) % 2, input().split()))
	o = sum(a)
	e = n - o
	f = False
	for i in range(1, o + 1, 2):
		if x - i >= 0 and e >= x - i:
			f = True
			break
	if f:
		print('YES')
	else:
		print('NO')


R = lambda : map(int, input().split())
(s,) = R()
exec(s * "n,x=R();a=1+sum(x%2for x in R());print('YNeos'[a<2or~x&(a>n)or x>n-a%2::2]);")


def solve(n, x, l):
	e = 0
	o = 0
	s = 0
	if n < x:
		return False
	for i in l:
		if i % 2 != 0:
			o += 1
	if o == 0:
		return False
	e = n - o
	o -= 1
	s += 1
	s += 2 * min((x - 1) // 2, o // 2)
	s += e
	if s >= x:
		return True
	return False
t = int(input())
for we in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	if solve(n, x, l):
		print('Yes')
	else:
		print('No')


def solution():
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	even = 0
	odd = 0
	for v in a:
		if v % 2:
			odd += 1
		else:
			even += 1
	if x == n:
		print('YES') if odd % 2 == 1 else print('NO')
		return
	if x % 2 == 0:
		print('YES') if even > 0 and odd > 0 else print('NO')
	else:
		print('YES') if odd > 0 else print('NO')
T = int(input())
for t in range(T):
	solution()


from functools import reduce
read = input
mi = lambda dt: map(dt, read().split())
cin = lambda : int(read())
for _ in range(cin()):
	(n, x) = mi(int)
	a = list(mi(int))
	(ne, no) = (0, 0)
	for el in a:
		if el % 2 == 0:
			ne += 1
		else:
			no += 1
	x -= min(1, no) + ne
	if no == 0:
		print('no')
	elif x % 2 != 0 and ne == 0:
		print('no')
	elif x % 2 != 0 and no - 1 < x + 1:
		print('no')
	else:
		print('Yes')


for _ in range(int(input())):
	(a, b) = map(int, input().split())
	ar = list(map(int, input().split()))
	odd = 0
	for i in ar:
		if i % 2 == 1:
			odd += 1
	if odd == 0 or (odd == a and b % 2 == 0) or (odd % 2 == 0 and a == b):
		print('No')
	else:
		print('Yes')


import sys
tcs = int(sys.stdin.readline())
for tc in range(tcs):
	(n, x) = map(int, sys.stdin.readline().strip().split())
	a = list(map(int, sys.stdin.readline().strip().split()))
	odd = even = 0
	for num in a:
		if num % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0 or (odd % 2 == 0 and odd + even == x) or (x % 2 == 0 and even == 0):
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	(kch, knch) = (0, 0)
	p = map(int, input().split())
	if x > knch or kch == 0:
		for a in p:
			if a % 2 == 0:
				kch += 1
			else:
				knch += 1
	if x % 2 == 1 and knch > 0:
		if knch >= x:
			print('Yes')
		else:
			x = max(x - kch + (x - kch + 1) % 2, 1)
			if knch >= x and x % 2 == 1:
				print('Yes')
			else:
				print('No')
	elif x % 2 == 0 and knch > 0 and (kch > 0):
		if knch >= x - 1 and kch > 0:
			print('Yes')
		else:
			x = max(x - kch + (x - kch + 1) % 2, 1)
			if knch >= x and x % 2 == 1:
				print('Yes')
			else:
				print('No')
	else:
		print('No')


t = int(input())
Ans = []
for i in range(0, t):
	A = [int(j) for j in input().split()]
	B = [int(j) for j in input().split()]
	x = 0
	y = 0
	for j in range(0, A[0]):
		if B[j] % 2 == 0:
			x += 1
		else:
			y += 1
	if y > 0:
		if x == 0 and A[1] % 2 == 0:
			Ans.append('No')
		elif A[0] == A[1] and sum(B) % 2 == 0:
			Ans.append('No')
		else:
			Ans.append('Yes')
	else:
		Ans.append('No')
print(*Ans, sep='\n', end='')


for i in range(int(input())):
	nechot = []
	chot = []
	(n, x) = map(int, input().split())
	massive = list(map(int, input().split()))
	for j in massive:
		if j % 2 != 0:
			nechot.append(j)
		else:
			chot.append(j)
	if len(nechot) == 0 or (len(nechot) % 2 == 0 and x == n) or (x % 2 == 0 and len(nechot) == n):
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odd = sum((int(i) % 2 for i in input().split()))
	even = n - odd
	if odd >= x and x % 2 == 1:
		print('Yes')
	else:
		if odd % 2 == 0:
			odd -= 1
		if odd > 0 and even > 0 and (odd + even >= x):
			print('Yes')
		else:
			print('No')


T = int(input())
for i in range(T):
	(n, x) = list(map(int, input().split()))
	s = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if s[i] % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd % 2 == 0:
		odd -= 1
	if odd > 0 and (x % 2 != 0 or even > 0) and (odd + even >= x):
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(num, k) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	odds = len([x for x in a if x % 2 == 1])
	evens = num - odds
	yes = False
	for i in range(1, odds + 1, 2):
		temp = k - i
		if temp >= 0 and temp <= evens:
			yes = True
			break
	print('Yes' if yes else 'No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	for i in range(n):
		if a[i] % 2 == 0:
			a[i] = 0
		else:
			a[i] = 1
	su = sum(a[0:x])
	su1 = sum(a[x:n])
	ev = x - su
	od = su
	ev1 = n - x - su1
	od1 = su1
	if su % 2 == 1:
		print('Yes')
	elif od1 > 0 and ev > 0:
		print('Yes')
	elif ev1 > 0 and od > 0:
		print('Yes')
	else:
		print('No')


def solve(n, x, a):
	(c0, c1) = (0, 0)
	for v in a:
		if v % 2 == 0:
			c0 += 1
		else:
			c1 += 1
	can = min(c1, x)
	if can == 0:
		return False
	if can % 2 == 0:
		can -= 1
	return can + c0 >= x
tests = int(input())
for test in range(tests):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print('Yes' if solve(n, x, a) else 'No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	ar = list(map(int, input().split()))
	(e, o) = (0, 0)
	for i in range(n):
		if ar[i] % 2 != 0:
			o += 1
		else:
			e += 1
	i = 0
	for i in range(1, min(o, x) + 1, 2):
		if e >= x - i:
			print('Yes')
			break
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for e in a:
		if e & 1 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('No')
		continue
	if x & 1 == 0:
		even_o = even if even & 1 == 1 else even - 1
		if x - even_o <= odd and even > 0:
			print('Yes')
		else:
			print('No')
	else:
		even_e = even if even & 1 == 0 else even - 1
		if x - even_e <= odd:
			print('Yes')
		else:
			print('No')


t = int(input())
for test in range(t):
	(n, x) = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	odd = []
	for i in arr:
		if i % 2 != 0:
			odd.append(i)
	ol = len(odd)
	even = n - ol
	if ol == 0:
		print('No')
		continue
	if ol % 2 == 0:
		ol = ol - 1
	req = x - ol
	if req > 0:
		if even >= req:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if even > 0:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for y in a:
		if y & 1:
			odd += 1
		else:
			even += 1
	ok = False
	for k in range(1, 1 + odd, 2):
		if x < k:
			break
		elif x - k <= even:
			ok = True
	if ok:
		print('Yes')
	else:
		print('No')


def answer(n, x, A):
	count = 0
	for i in range(n):
		if A[i] % 2 != 0:
			count += 1
	if count == 0:
		return 'NO'
	if x % 2 == 0:
		if x <= count:
			if n - count >= 1:
				return 'YES'
			else:
				return 'NO'
		elif count % 2 == 0:
			if x - count + 1 <= n - count:
				return 'YES'
			else:
				return 'NO'
		elif x - count <= n - count:
			return 'YES'
		else:
			return 'NO'
	elif x <= count:
		return 'YES'
	elif count % 2 == 0:
		if x - count + 1 <= n - count:
			return 'YES'
		else:
			return 'NO'
	elif x - count <= n - count:
		return 'YES'
	else:
		return 'NO'
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	print(answer(n, x, A))


import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(_) for _ in input().split()]
	oddCnt = 0
	for i in a:
		if i % 2 == 1:
			oddCnt += 1
	if n - oddCnt > 0:
		isEven = True
	else:
		isEven = False
	if n == x:
		if sum(a) % 2 == 1:
			print('Yes')
		else:
			print('No')
		continue
	if x % 2 == 0:
		if isEven and oddCnt > 0:
			print('Yes')
		else:
			print('No')
	elif oddCnt > 0:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, xm) = map(int, input().split())
	l = map(int, input().split())
	e = 0
	o = 0
	for x in l:
		if x % 2 == 0:
			e += 1
		else:
			o += 1
	if xm % 2 == 0:
		if o > 0 and e > 0:
			if xm < n:
				print('Yes')
			elif o % 2 != 0:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
	elif o > 0:
		if xm < n:
			print('Yes')
		elif o % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


def main():
	(n, k) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	chet = 0
	ne_chet = 0
	if n == k:
		if sum(a) % 2 == 1:
			return 'Yes'
		return 'No'
	for i in range(n):
		if a[i] % 2 == 0:
			chet += 1
		else:
			ne_chet += 1
	if ne_chet == 0:
		return 'No'
	if k % 2 == 1:
		return 'Yes'
	if chet == 0:
		return 'No'
	return 'Yes'
t = int(input())
for fd in range(t):
	print(main())


from collections import defaultdict
import math
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in arr:
		if i & 1 == 1:
			odd += 1
		else:
			even += 1
	if even == n:
		print('No')
	elif x & 1 == 1:
		if even == 0:
			print('Yes')
		elif odd >= x:
			print('Yes')
		else:
			ch = x
			if odd & 1 == 1:
				ch -= odd
				if even >= ch:
					print('Yes')
				else:
					print('No')
			else:
				ch -= odd - 1
				if even >= ch:
					print('Yes')
				else:
					print('No')
	elif even == 0:
		print('No')
	elif odd >= x:
		print('Yes')
	else:
		ch = x
		if odd & 1 == 1:
			ch -= odd
			if even >= ch:
				print('Yes')
			else:
				print('No')
		else:
			ch -= odd - 1
			if even >= ch:
				print('Yes')
			else:
				print('No')


t = int(input())
for T in range(t):
	[n, x] = list(map(int, input().split(' ')))
	arr = list(map(int, input().split(' ')))
	nOdds = 0
	nEven = 0
	for i in arr:
		if i % 2 != 0:
			nOdds += 1
		else:
			nEven += 1
	ans = 'No'
	for i in range(1, min(nOdds, x) + 1, 2):
		if x - i <= nEven:
			ans = 'Yes'
			break
	print(ans)


import sys, re, math
from collections import deque, defaultdict, Counter, OrderedDict
from math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, gcd
from heapq import heappush, heappop, heapify, nlargest, nsmallest

def STR():
	return list(input())

def INT():
	return int(input())

def MAP():
	return map(int, input().split())

def LIST():
	return list(map(int, input().split()))

def list2d(a, b, c):
	return [[c] * b for i in range(a)]

def sortListWithIndex(listOfTuples, idx):
	return sorted(listOfTuples, key=lambda x: x[idx])

def sortDictWithVal(passedDic):
	temp = sorted(passedDic.items(), key=lambda kv: (kv[1], kv[0]))[::-1]
	toret = {}
	for tup in temp:
		toret[tup[0]] = tup[1]
	return toret

def sortDictWithKey(passedDic):
	return dict(OrderedDict(sorted(passedDic.items())))
INF = float('inf')
mod = 10 ** 9 + 7
t = INT()
while t != 0:
	(n, x) = MAP()
	a = LIST()
	odd = 0
	for el in a:
		if el % 2 != 0:
			odd += 1
	eve = n - odd
	if odd > 0:
		if x % 2 == 0:
			if odd >= x and eve > 0:
				print('Yes')
			elif odd % 2 != 0 and eve > 0:
				print('Yes')
			elif x <= n - 1 and eve > 0:
				print('Yes')
			else:
				print('No')
		elif odd >= x:
			print('Yes')
		elif odd % 2 != 0:
			print('Yes')
		elif x <= n - 1:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
	t -= 1


t = int(input())
for k in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	j = 1
	flag = False
	while j <= odd and j <= x:
		need = x - j
		if need <= even:
			flag = True
		j += 2
	if flag:
		print('YES')
	else:
		print('NO')


T = int(input())
for _ in range(T):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	odd = len([1 for a in A if a % 2])
	if odd == 0:
		print('No')
		continue
	ev = N - odd
	mxodd = odd if odd % 2 else odd - 1
	if ev == 0 and X % 2 == 0:
		print('No')
		continue
	print('Yes' if mxodd + ev >= X else 'No')


for t in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(od, ev) = (0, 0)
	for i in arr:
		if i % 2:
			od += 1
		else:
			ev += 1
	if od > 0:
		if x % 2:
			if od % 2:
				x -= od
			else:
				x -= od - 1
			if ev >= x:
				print('Yes')
			else:
				print('No')
		else:
			if od % 2:
				x -= min(od, x - 1)
			else:
				x -= min(od - 1, x - 1)
			if ev >= x:
				print('Yes')
			else:
				print('No')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	odd = 0
	for i in l:
		odd += i & 1
	eve = n - odd
	if odd == 0:
		print('No')
		continue
	po = odd - (odd & 1 ^ 1)
	if x <= po:
		if x & 1:
			print('Yes')
			continue
		elif eve > 0:
			print('Yes')
			continue
	elif eve >= x - po:
		print('Yes')
		continue
	print('No')


from sys import stdin, stdout

def find2(arr, N, X):
	(a, b) = (0, 0)
	for i in arr:
		if i % 2:
			a += 1
		else:
			b += 1
	while (X % 2 == 0 or X > a) and b > 0:
		X -= 1
		b -= 1
	if X % 2 == 0 or X > a:
		return 'No'
	return 'Yes'

def find(arr, N, X):
	(a, b) = (0, 0)
	for i in arr:
		if i % 2:
			a += 1
		else:
			b += 1
	if a < 1:
		return 'No'
	a -= 1
	X -= 1
	X -= min(X // 2, a // 2) * 2
	if X <= b:
		return 'Yes'
	return 'No'

def main():
	for _ in range(int(stdin.readline())):
		(N, X) = list(map(int, stdin.readline().split()))
		arr = list(map(int, stdin.readline().split()))
		print(find(arr, N, X))
main()


t = int(input())
while t > 0:
	(n, x) = list(map(int, input().split()))
	L = list(map(int, input().split()))
	sm = 0
	hasEven = False
	hasOdd = False
	for i in L:
		if i % 2 == 0:
			hasEven = True
		if i % 2 == 1:
			hasOdd = True
		sm += i
	if n == x and sm % 2 == 1:
		print('YES')
	elif n == x and sm % 2 == 0:
		print('NO')
	elif not hasEven and x % 2 == 0:
		print('NO')
	elif not hasEven and x % 2 == 1:
		print('YES')
	elif not hasOdd:
		print('NO')
	else:
		print('YES')
	t -= 1


from math import *
for t in range(int(input())):
	(n, x) = map(int, input().split())
	mas = list(map(int, input().split()))
	cnt2 = 0
	cnt1 = 0
	for i in mas:
		if i % 2 == 0:
			cnt2 += 1
		else:
			cnt1 += 1
	if cnt1 == 0:
		print('No')
		continue
	cnt1 -= 1
	x -= 1
	while x > 1 and cnt1 > 1:
		x -= 2
		cnt1 -= 2
	if cnt2 >= x:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(n, x) = map(int, input().split(' '))
	a = list(input().split(' '))
	s = 0
	for b in a:
		if int(b) % 2 != 0:
			s = s + 1
	if s == 0:
		print('NO')
	elif s >= x and x % 2 != 0:
		print('YES')
	elif s >= x and x % 2 == 0 and (s != n):
		print('YES')
	elif s < x:
		if s % 2 != 0:
			print('YES')
		elif x != n:
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


import sys
input = sys.stdin.readline
from collections import defaultdict

def arr():
	L = list(map(int, input().split()))
	return L
for _ in range(int(input())):
	(N, K) = map(int, input().split())
	L = arr()
	cnto = 0
	cnte = 0
	for i in L:
		if i % 2 != 0:
			cnto += 1
		else:
			cnte += 1
	if cnto == 0:
		print('No')
		continue
	if N == K:
		if cnto % 2:
			print('Yes')
		else:
			print('No')
	elif K < N:
		if cnte == 0 and K % 2 == 0:
			print('No')
		elif cnte > 0 and K % 2 == 0:
			print('Yes')
		else:
			print('Yes')


t = int(input())
for ii in range(t):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	odd = 0
	for i in lis:
		if i % 2:
			odd += 1
	even = n - odd
	g = 0
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			g = 1
			break
	if g:
		print('YES')
	else:
		print('NO')


from math import *
from collections import *
from itertools import *
from bisect import *
from heapq import *
from operator import *
from sys import *
setrecursionlimit(1000000)
d = defaultdict(lambda : 0, {})

def io():
	return map(int, input().split())

def op():
	return list(map(int, input().split()))

def o():
	return int(input())

def r(x):
	if type(x) == int:
		return range(x)
	else:
		return range(len(x))

def kl(con, x=0):
	if x == 0:
		print('Yes') if con else print('No')
	elif x == 1:
		print('yes') if con else print('no')
	elif x == 2:
		print('YES') if con else print('NO')
MOD = 1000000007
MAX = float('inf')
MIN = -float('inf')
p = input
for i in r(o()):
	(n, x) = io()
	l = op()
	(c1, c2) = (0, 0)
	for i in r(n):
		if l[i] & 1:
			c1 += 1
		else:
			c2 += 1
	if c2 >= x and c1 >= 1:
		print('YES')
		continue
	if x & 1 and x <= c1:
		print('YES')
		continue
	elif c2 < x:
		if x - c2 & 1:
			x -= c2
			if x <= c1:
				print('YES')
				continue
		elif c2 > 0:
			x -= c2 - 1
			if x <= c1:
				print('YES')
				continue
	print('NO')


for i1 in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	for i in range(1, n + 1, 2):
		if i <= odd and x - i <= even and (x - i >= 0):
			flag = 1
			break
	if flag == 1:
		print('YES')
	else:
		print('NO')


for _ in [0] * int(input()):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	f = [0, 0]
	for num in a:
		f[num % 2] += 1
	ans = 'No'
	for i in range(1, min(f[1], x) + 1, 2):
		if x - i <= f[0]:
			ans = 'Yes'
	print(ans)


t = int(input())
for test in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	cnt = 0
	for k in l:
		if k % 2 != 0:
			cnt += 1
	if n != x:
		if cnt != 0:
			if l.count(l[0]) == n:
				if x % 2 == 0:
					print('No')
				else:
					print('Yes')
			elif cnt == n:
				if x % 2 == 0:
					print('No')
				else:
					print('Yes')
			else:
				print('Yes')
		else:
			print('No')
	elif cnt % 2 == 0 or cnt == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	s = list(map(int, input().split()))
	count_even = 0
	count_odd = 0
	for i in s:
		if i % 2:
			count_odd += 1
	count_even = n - count_odd
	f = 0
	for i in range(1, count_odd + 1, 2):
		evn = x - i
		if evn >= 0 and evn <= count_even:
			f = 1
			break
	if f:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	c = 0
	s = 0
	f = 0
	for i in range(n):
		if a[i] % 2 == 0:
			c = c + 1
		else:
			s = s + 1
	if s == 0:
		f = 1
	elif c == 0:
		if x % 2 == 0:
			f = 1
	else:
		if s % 2 == 0:
			s = s - 1
		if s + c < x:
			f = 1
	if f == 0:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, p) = [int(x) for x in input().split(' ')]
	arr = [int(x) for x in input().split(' ')]
	count = 0
	k = 0
	for i in range(n):
		arr[i] = arr[i] % 2
		if arr[i]:
			count = count + 1
	if count >= p:
		if p % 2:
			p = 0
		elif 0 in arr:
			p = 0
	elif count % 2 and p - count <= arr.count(0):
		p = 0
	elif count - 1 > 0 and p - count + 1 <= arr.count(0):
		p = 0
	if p:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	b = 0
	for xx in a:
		if xx % 2 == 0:
			b += 1
	c = len(a) - b
	if len(a) == x:
		if sum(a) % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif c == 0:
		print('No')
	elif b == 0 and x % 2 == 0:
		print('No')
	else:
		print('Yes')


T = int(input())
for i in range(T):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	s = 0
	for i in lst:
		if i % 2 != 0:
			s += 1
	if s == 0:
		print('No')
	elif s % 2 == 0 and n == x:
		print('No')
	elif x % 2 == 0 and s == n:
		print('No')
	else:
		print('Yes')


from sys import stdin
inp = lambda : stdin.readline().strip()
t = int(inp())
for _ in range(t):
	(n, x) = [int(x) for x in inp().split()]
	a = [int(x) for x in inp().split()]
	odd = 0
	even = 0
	for i in a:
		if i % 2:
			odd += 1
		else:
			even += 1
	oddsTaken = odd
	if not odd % 2:
		oddsTaken -= 1
	if not x % 2:
		if even == 0:
			print('No')
			continue
	if oddsTaken > 0 and oddsTaken + even >= x:
		print('Yes')
	else:
		print('No')


import itertools

def brute(arr, x):
	for subset in itertools.combinations(arr, x):
		subsetSum = sum(subset)
		if subsetSum % 2 == 1:
			return True
	return False

def soln(arr, x):
	numEvens = 0
	numOdds = 0
	for num in arr:
		if num % 2 == 0:
			numEvens += 1
		else:
			numOdds += 1
	x -= 1
	numOdds -= 1
	while x > 1 and numOdds - 2 >= 0:
		numOdds -= 2
		x -= 2
	while x > 0:
		numEvens -= 1
		x -= 1
	return numOdds >= 0 and numEvens >= 0

def main():
	t = int(input())
	for _ in range(t):
		(n, x) = [int(x) for x in input().split(' ')]
		arr = [int(x) for x in input().split()]
		result = soln(arr, x)
		print('Yes' if result else 'No')

def randomTest():
	import random
	T = 100
	N = 5
	for i in range(1, T + 1):
		arr = [random.randint(0, 10) for _ in range(N)]
		x = random.randint(1, 5)
		print(i, arr, x)
		b = brute(arr, x)
		f = soln(arr, x)
		try:
			assert b == f
		except:
			print('Broken: ')
			print(b, f)
			return
main()


import sys
import math
from collections import defaultdict
from collections import deque
from itertools import combinations
from itertools import permutations
input = lambda : sys.stdin.readline().rstrip()
read = lambda : list(map(int, input().split()))
go = lambda : 1 / 0

def write(*args, sep='\n'):
	for i in args:
		sys.stdout.write('{}{}'.format(i, sep))
INF = float('inf')
MOD = int(1000000000.0 + 7)
YES = 'YES'
NO = 'NO'
for _ in range(int(input())):
	try:
		(n, x) = read()
		arr = read()
		odd = even = 0
		for i in arr:
			if i % 2 == 0:
				even += 1
			else:
				odd += 1
		for i in range((x + 1) // 2):
			e = 1 - x % 2 + 2 * i
			o = x - e
			if even >= e and odd >= o:
				print(YES)
				go()
		print(NO)
	except ZeroDivisionError:
		continue
	except Exception as e:
		print(e)
		continue


t = int(input())
for T in range(t):
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	l = []
	l = []
	for i in range(n):
		if a[i] % 2 and len(l) < x:
			l.append(a[i])
	if len(l) % 2 == 0 and len(l) > 0:
		del l[-1]
	for i in range(n):
		if a[i] % 2 == 0 and len(l) < x:
			l.append(a[i])
	if sum(l) % 2 and len(l) == x:
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
import math

def solve():
	cases = int(input())
	for case in range(1, cases + 1):
		(n, x) = [int(n) for n in input().split()]
		a = [int(n) for n in input().split()]
		(b, c) = (0, 0)
		for e in a:
			if e % 2 == 1:
				b += 1
			else:
				c += 1
		if b == 0:
			print('No')
			continue
		if x == n:
			if b % 2 == 0:
				print('No')
			else:
				print('Yes')
			continue
		if x % 2 == 1:
			if b > 0:
				print('Yes')
			else:
				print('No')
		elif c > 0:
			print('Yes')
		else:
			print('No')
solve()


t = int(input())
for i in range(t):
	(n, x) = [int(x) for x in input().split()]
	l = [int(x) for x in input().split()]
	if x < len(l):
		u = 1
		for i in range(n - 1):
			if (l[i] + l[i + 1]) % 2 == 1:
				print('Yes')
				u = 0
				break
		if u == 1:
			if x * l[0] % 2 == 1:
				print('Yes')
			else:
				print('No')
	elif sum(l) % 2 == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	m = min(e, x - 1)
	d = x - m
	if d % 2 == 0:
		d += 1
	if o >= d and d <= x:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline
t = int(input())
for test in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	num_e = 0
	num_o = 0
	ans = 0
	for i in range(len(a)):
		if a[i] % 2 == 0:
			num_e += 1
		else:
			num_o += 1
	flag = 0
	for e in range(num_e + 1):
		o = x - e
		if o <= num_o and o % 2 != 0 and (o >= 0):
			print('Yes')
			flag = 1
			break
	if flag == 0:
		print('No')


for i in range(int(input())):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	(q, w, t) = (0, 0, 0)
	for i in a:
		if i & 1:
			q += 1
		else:
			w += 1
	for e in range(k):
		if e <= w and k - e <= q and ((k - e) % 2 == 1):
			t = 1
			break
	print('Yes' if t else 'No')


import sys

def solve(n, x, arr):
	even = len(list(filter(lambda x: x % 2 == 0, arr)))
	odd = n - even
	if odd == 0:
		return 'No'
	for i in range(1, odd + 1, 2):
		for j in range(0, even + 1):
			if x == i + j:
				return 'Yes'
	return 'No'

def main():
	numCases = int(sys.stdin.readline())
	for i in range(numCases):
		(n, x) = map(int, sys.stdin.readline().split())
		arr = list(map(int, sys.stdin.readline().split()))
		print(solve(n, x, arr))
main()


T = int(input())
for t in range(T):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	even_count = 0
	has_odd = 0
	for a in A:
		if a % 2 == 0:
			even_count += 1
		else:
			has_odd += 1
	if X < N:
		if even_count == N:
			print('No')
		elif has_odd == N:
			if X % 2 == 0:
				print('No')
			else:
				print('Yes')
		else:
			print('Yes')
	elif has_odd % 2 == 1:
		print('Yes')
	else:
		print('No')


def f():
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	odd = even = 0
	for i in lst:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 0 and even == 0 or odd == 0:
		print('No')
	elif odd % 2 == 0:
		if odd < x:
			if even >= x - (odd - 1):
				print('Yes')
			else:
				print('No')
		elif odd == x:
			print('Yes' if even >= 1 else 'No')
		else:
			print('Yes')
	elif even >= x - odd:
		print('Yes')
	else:
		print('No')
for _ in range(int(input())):
	f()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even_cnt = 0
	odd_cnt = 0
	for i in a:
		if i % 2 == 0:
			even_cnt += 1
		else:
			odd_cnt += 1
	if x % 2 == 0:
		even_cnt_2 = even_cnt
		odd_cnt_2 = odd_cnt
		if even_cnt_2 == 0:
			print('No')
			continue
		if odd_cnt_2 == 0:
			print('No')
			continue
		if even_cnt_2 % 2 == 0:
			even_cnt_2 -= 1
		if odd_cnt_2 % 2 == 0:
			odd_cnt_2 -= 1
		if even_cnt_2 + odd_cnt_2 >= x and (even_cnt_2 + odd_cnt_2) % 2 == x % 2:
			print('Yes')
		else:
			print('No')
	else:
		even_cnt_2 = even_cnt
		odd_cnt_2 = odd_cnt
		if odd_cnt_2 == 0:
			print('No')
			continue
		if even_cnt_2 % 2 == 1:
			even_cnt_2 -= 1
		if odd_cnt_2 % 2 == 0:
			odd_cnt_2 -= 1
		if even_cnt_2 + odd_cnt_2 >= x and (even_cnt_2 + odd_cnt_2) % 2 == x % 2:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	m = 0
	for j in arr:
		if j % 2 != 0:
			m += 1
	if m >= x:
		if n - m == 0 and x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif m == 0:
		print('No')
	elif m % 2 == 0 and x == n:
		print('No')
	else:
		print('Yes')


from collections import defaultdict as dfd
import math
import sys
import heapq

def II():
	return int(sys.stdin.readline())

def MI():
	return map(int, sys.stdin.readline().split())

def LI():
	return list(map(int, sys.stdin.readline().split()))

def LLI(rows_number):
	return [LI() for _ in range(rows_number)]

def main():
	for _ in range(int(input())):
		(n, x) = MI()
		A = LI()
		B = []
		C = []
		val = 0
		for i in range(len(A)):
			if A[i] % 2 == 0:
				B.append(A[i])
			else:
				C.append(A[i])
		if len(C) != 0:
			for i in range(len(C)):
				val += C[i]
				x -= 1
				if x == 0:
					break
			if x == 0 and val % 2 != 0:
				print('Yes')
			elif x == 0 and val % 2 == 0:
				if len(B) != 0:
					print('Yes')
				else:
					print('No')
			elif x != 0:
				for i in range(len(B)):
					val += B[i]
					x -= 1
					if x == 0:
						break
				if val % 2 != 0:
					print('Yes')
				else:
					val -= C[0]
					if i < len(B) - 1:
						print('Yes')
					else:
						print('No')
		else:
			print('No')
main()


import sys
import math
import collections
from collections import deque
from functools import reduce
from sys import stdin, stdout, setrecursionlimit
setrecursionlimit(2 ** 20)

def factors(n):
	return list(set(reduce(list.__add__, ([i, n // i] for i in range(1, int(n ** 0.5) + 1) if n % i == 0))))
for _ in range(int(stdin.readline())):
	(n, x) = list(map(int, stdin.readline().split()))
	a = list(map(int, stdin.readline().split()))
	b = []
	for i in a:
		b.append(i % 2)
	(o, e) = (b.count(1), b.count(0))
	l = min(o, x)
	k = 0
	for i in range(1, l + 1, 2):
		if e >= x - i:
			k = 1
	if k == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	(n, x) = map(int, input().split())
	num = list(map(int, input().split()))
	odd = 0
	for i in range(len(num)):
		if num[i] % 2 == 1:
			odd += 1
	even = len(num) - odd
	res = False
	for i in range(1, odd + 1, 2):
		j = x - i
		if even >= j and j >= 0:
			res = True
			break
	if res is True:
		print('Yes')
	else:
		print('No')
	t -= 1


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return s[:len(s) - 1]

def invr():
	return map(int, input().split())

def solve(dim, t):
	(n, x) = dim
	evens = 0
	odds = 0
	for v in t:
		if v % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds == 0:
		print('No')
		return
	for i in range(1, 1 + min(x, odds), 2):
		if evens >= x - i:
			print('Yes')
			return
	print('No')
T = inp()
tests = []
dims = []
for _ in range(T):
	dims.append(inlt())
	tests.append(inlt())
for i in range(T):
	solve(dims[i], tests[i])


for _ in range(int(input())):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	odd = 0
	for i in A:
		if i % 2 != 0:
			odd = odd + 1
	if odd == 0 or (N == X and odd % 2 == 0) or (odd == N and X % 2 == 0):
		print('No')
	else:
		print('Yes')


import sys
t = sys.stdin.readline()

def main(l, n):
	od = 0
	ev = 0
	for i in l:
		if i % 2 == 1:
			od += 1
		else:
			ev += 1
		if od % 2 == 1 and od == n:
			return 'Yes'
	if od == 0:
		return 'No'
	if n % 2 == 0:
		if n <= od:
			if ev > 0:
				return 'Yes'
			else:
				return 'No'
		if n > od:
			if od % 2 == 1:
				return 'Yes'
			elif ev >= n - od + 1:
				return 'Yes'
			else:
				return 'No'
	if n % 2 == 1:
		if n > od:
			if od % 2 == 1:
				return 'Yes'
			elif ev >= n - od + 1:
				return 'Yes'
			else:
				return 'No'
for i in range(int(t)):
	l1 = sys.stdin.readline().split()
	n = int(l1[1])
	l1 = sys.stdin.readline()
	l2 = list(map(int, l1.split()))
	print(main(l2, n))


def main():
	t = int(input())
	for i in range(t):
		(n, x) = map(int, input().split())
		arr = list(map(int, input().split()))
		cn = 0
		ch = 0
		sm = 0
		for j in arr:
			if j % 2 == 0:
				ch += 1
			else:
				cn += 1
			sm += j
		if cn >= x:
			if x % 2 == 0:
				if ch > 0:
					print('YES')
				else:
					print('NO')
			else:
				print('YES')
		elif cn % 2 == 0:
			if cn > 0:
				if cn - 1 + ch >= x:
					print('YES')
				else:
					print('NO')
			else:
				print('NO')
		else:
			print('YES')
main()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	if n == x:
		if sum(l) % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		(evens, le) = ([], 0)
		(odds, lo) = ([], 0)
		for i in l:
			if i % 2 == 0:
				evens.append(i)
				le += 1
			else:
				odds.append(i)
				lo += 1
		if lo == 0:
			print('No')
		elif le == 0:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif x < n:
			print('Yes')


t = int(input())

def func():
	(n, x) = map(int, input().split())
	nums = list(map(int, input().split()))
	pares = 0
	impares = 0
	for i in nums:
		if i % 2 == 0:
			pares += 1
		else:
			impares += 1
	for i in range(impares + 1):
		if i == x and i % 2 == 1:
			print('Yes')
			return
		if i <= x and i % 2 == 1 and (i + pares >= x):
			print('Yes')
			return
	print('No')
for i in range(t):
	func()


for _ in range(int(input())):
	(a, b) = map(int, input().split())
	c = list(map(int, input().split()))
	o2 = 0
	o1 = 0
	for i in c:
		if i % 2 == 0:
			o2 += 1
		else:
			o1 += 1
	o1 = o1 - 1 + o1 % 2
	if o2 == 0 and b % 2 == 0:
		print('no')
	elif o1 == -1:
		print('no')
	elif o1 + o2 < b:
		print('no')
	else:
		print('yes')


import math
import sys
import collections
from collections import defaultdict
from sys import stdin, stdout
sys.setrecursionlimit(10 ** 9)
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(e, o) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if x == 1:
		if o != 0:
			print('Yes')
		else:
			print('No')
	elif e != 0 and o != 0:
		if e == o:
			if e + o > x:
				print('Yes')
			elif e + o == x and o % 2 != 0:
				print('Yes')
			else:
				print('No')
		elif e > o:
			if e + o > x:
				print('Yes')
			elif e + o == x and o % 2 != 0:
				print('Yes')
			else:
				print('No')
		elif e + o > x:
			print('Yes')
		elif e + o == x and o % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif e != 0 and o == 0:
		print('No')
	elif e == 0 and o != 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')


def f(A, n, x):
	odd = 0
	for i in A:
		if int(i) % 2 == 1:
			odd += 1
	if odd == 0:
		return 'No'
	elif odd == n:
		if x % 2 == 1:
			return 'Yes'
		else:
			return 'No'
	elif odd % 2 == 0:
		if n > x:
			return 'Yes'
		else:
			return 'No'
	else:
		return 'Yes'
t = input()
for i in range(int(t)):
	[n, x] = input().split(' ')
	A = input().split(' ')
	print(f(A, int(n), int(x)))


from collections import Counter
T = int(input().strip())
for t in range(T):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	hh = Counter()
	for i in a:
		hh[i % 2] += 1
	if n > x:
		if hh[0] and hh[1]:
			print('Yes')
		elif hh[1] and x % 2:
			print('Yes')
		else:
			print('No')
	elif hh[1] % 2:
		print('Yes')
	else:
		print('No')


def max_odd(x):
	return x if x % 2 == 1 else x - 1
t = int(input())
for kase in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	c = [0, 0]
	for i in a:
		c[i % 2] += 1
	(c0, c1) = c
	if c1 == 0:
		print('No')
		continue
	s1 = max_odd(min(x, c1))
	if s1 + c0 >= x:
		print('Yes')
	else:
		print('No')


import math

def WaaZnA():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		odd = 0
		arr = list(map(int, input().split()))
		for i in arr:
			if i & 1:
				odd += 1
		if odd == 0 or (x == n and odd % 2 == 0) or (odd == n and x % 2 == 0):
			print('No')
		else:
			print('Yes')
WaaZnA()


t = int(input())
for i in range(t):
	(n, p) = input().split()
	n = int(n)
	p = int(p)
	arr = input().split()
	arr = list(map(int, arr))
	count_even = 0
	count_odd = 0
	for item in arr:
		if item % 2 == 1:
			count_odd += 1
		else:
			count_even += 1
	if p == n:
		if count_odd % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif count_odd >= 1 and count_even >= 1:
		print('Yes')
	elif count_odd == 0:
		print('No')
	elif count_even == 0:
		if p % 2 == 1:
			print('Yes')
		else:
			print('No')


from sys import stdin, stdout
cin = stdin.readline
cout = stdout.write
mp = lambda : list(map(int, cin().split()))

def chars():
	s = cin()
	return list(s[:len(s) - 1])
(t,) = mp()
for _ in range(t):
	(n, x) = mp()
	a = mp()
	odd = 0
	for i in range(n):
		odd += (0, 1)[a[i] % 2]
	if not odd:
		cout('No\n')
	elif odd == n:
		if x % 2:
			cout('Yes\n')
		else:
			cout('no\n')
	elif odd % 2:
		cout('Yes\n')
	elif x <= n - 1:
		cout('yes\n')
	else:
		cout('no\n')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = sum((i % 2 for i in a))
	e = n - o
	print('YNeos'[x > o - (o - 1) % 2 + e or (o == 0 or (e == 0 and x % 2 == 0))::2])


from collections import Counter

def solve():
	(n, x) = map(int, input().split())
	A = Counter(list(map(lambda x: int(x) % 2, input().split())))
	if A[0] == n:
		return 'No'
	if A[0] > 0:
		if x < n:
			return 'Yes'
		elif A[1] % 2 == 1:
			return 'Yes'
		else:
			return 'No'
	if x % 2 == 1:
		return 'Yes'
	else:
		return 'No'

def main():
	T = int(input())
	ANS = []
	for _ in range(T):
		ANS.append(solve())
	print('\n'.join(ANS))
main()


t = int(input())
for z in range(t):
	(n, k) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	count = 0
	for i in range(1, o + 1, 2):
		if i + e >= k and i <= k:
			count = 1
			break
	if count == 0:
		print('No')
	else:
		print('Yes')


from sys import stdin
input = stdin.readline
for _ in range(int(input())):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	s = list(map(int, input().split()))
	(ec, oc) = (0, 0)
	for c in s:
		if c % 2 == 0:
			ec += 1
		else:
			oc += 1
	flag = False
	for i in range(1, oc + 1, 2):
		if x - i <= ec and x - i >= 0:
			flag = True
			break
	print('Yes' if flag else 'No')


import sys

def readStr():
	return sys.stdin.readline().rstrip()

def readInts():
	return list(map(int, readStr().split(' ')))

def main(n, x, a):
	n_even = 0
	for ai in a:
		if ai % 2 == 0:
			n_even += 1
	n_odd = n - n_even
	if n_odd == 0:
		return False
	elif n_odd == 1:
		return True
	if n_even == 0:
		if x % 2 == 0:
			return False
		else:
			return True
	if x == n:
		if n_odd % 2 == 0:
			return False
	return True
(t,) = readInts()
for _ in range(t):
	(n, x) = readInts()
	a = readInts()
	f = main(n, x, a)
	print('Yes' if f else 'No')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	co = 0
	ce = 0
	for ele in l:
		if ele % 2 == 0:
			ce += 1
		else:
			co += 1
	if co == 0:
		print('No')
	elif x == n:
		if co % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif ce == 0 and x % 2 == 0:
		print('No')
	else:
		print('Yes')
	t -= 1


from sys import stdin, stdout
lis = lambda : list(map(int, input().split()))
Ma = lambda : map(int, input().split())
inte = lambda : int(input())
st = lambda : input()
import math
from collections import Counter
for i in range(inte()):
	(n, x) = Ma()
	a = lis()
	o = 0
	e = 0
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('NO')
	elif e == 0:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif e >= x - 1:
		print('YES')
	elif x == n:
		if sum(a) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('YES')


T = int(input())

def ans(A, x):
	pos_odd = []
	pos_even = []
	ret = []
	for (i, e) in enumerate(A):
		if e % 2 == 1:
			pos_odd += [i]
		else:
			pos_even += [i]
	if len(pos_odd) == 0:
		return None
	ret += [pos_odd[0]]
	pos_odd = pos_odd[1:]
	x -= 1
	assert len(pos_even) >= 0
	assert len(pos_odd) >= 0
	if len(pos_odd) % 2 == 1:
		pos_odd = pos_odd[1:]
	while x > 1 and len(pos_odd):
		x -= 2
		ret += pos_odd[0:2]
		pos_odd = pos_odd[2:]
	assert x >= 0
	while x > 0 and len(pos_even):
		x -= 1
		ret += pos_even[0:1]
		pos_even = pos_even[1:]
	if x == 0:
		return ret
	return None

def ans2(A, x):
	ret = ans(A, x)
	if ret is None:
		return 'No'
	if ret == 'Yes':
		return 'Yes'
	assert len(ret) == x
	sum = 0
	for i in ret:
		sum += A[i]
	assert sum % 2 == 1
	return 'Yes'
for t in range(T):
	(n, x) = input().split(' ')
	n = int(n)
	x = int(x)
	A = input().split(' ')
	A = [int(a) for a in A]
	print(ans2(A, x))


rr = lambda : input().strip()
rri = lambda : int(rr())
rrm = lambda : [int(x) for x in rr().split()]
from sys import stdin, stdout

def sol():
	(n, x) = rrm()
	lis = rrm()
	od = 0
	ev = 0
	for i in lis:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
		return
	elif x == n:
		if od % 2 == 0:
			print('No')
			return
	if x % 2 == 0 and ev == 0:
		print('No')
		return
	print('Yes')
	return
T = rri()
for t in range(1, T + 1):
	ans = sol()


tests = int(input())
for i in range(tests):
	numbers = input().split(' ')
	n = int(numbers[0])
	x = int(numbers[1])
	a = [int(j) for j in input().split(' ')]
	odd = 0
	even = 0
	for j in range(n):
		if a[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif n == x:
		if odd % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif (x - 1) % 2 == 0:
		print('Yes')
	elif even == 0:
		print('No')
	else:
		print('Yes')


t = int(input())
for test in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd % 2 == 0:
		mx = even + odd - 1
	else:
		mx = even + odd
	if odd == 0:
		print('No')
	elif x % 2 == 0:
		if even == 0:
			print('No')
		elif mx >= x:
			print('Yes')
		else:
			print('No')
	elif mx >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
a = []
while t > 0:
	a.append([[int(k) for k in input().split(' ')], [int(k) for k in input().split(' ')]])
	t -= 1
for pair in a:
	count_1 = 0
	count_2 = 0
	for number in pair[1]:
		if number % 2 == 0:
			count_1 += 1
		else:
			count_2 += 1
	if count_2 == 0:
		print('No')
	else:
		check = False
		while count_1 > 0 and pair[0][1] > 1:
			check = True
			pair[0][1] -= 1
			count_1 -= 1
		if pair[0][1] == 1 and count_2 > 0:
			print('Yes')
		elif pair[0][1] % 2 == 0:
			pair[0][1] += 1
			if pair[0][1] <= count_2 and check:
				print('Yes')
			else:
				print('No')
		elif pair[0][1] % 2 != 0 and pair[0][1] <= count_2:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	ev = 0
	od = 0
	for i in arr:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
		continue
	if x % 2 == 0:
		if od % 2 == 0:
			s = min(od - 1, x - 1)
		else:
			s = min(od, x - 1)
	elif od % 2 == 1:
		s = min(od, x)
	else:
		s = min(od - 1, x)
	if s + ev >= x:
		print('Yes')
	else:
		print('No')


import bisect
import sys
import math
input = sys.stdin.readline
from collections import defaultdict

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())

def solve(case):
	[n, x] = inlt()
	aa = inlt()
	odd = 0
	even = 0
	for a in aa:
		if a % 2 == 0:
			odd += 1
		else:
			even += 1
	if even == 0:
		return 'No'
	takeEven = min(even, x)
	if takeEven > 0 and takeEven % 2 == 0:
		takeEven -= 1
	if takeEven == 0 or x - takeEven > odd:
		return 'No'
	return 'Yes'
if len(sys.argv) > 1 and sys.argv[1].startswith('input'):
	f = open('./' + sys.argv[1], 'r')
	input = f.readline
T = inp()
for i in range(T):
	res = solve(i + 1)
	print(str(res))


from sys import stdin, stdout
import math
from collections import Counter, deque
L = lambda : list(map(int, stdin.readline().strip().split()))
M = lambda : map(int, stdin.readline().strip().split())
I = lambda : int(stdin.readline().strip())
IN = lambda : stdin.readline().strip()
C = lambda : stdin.readline().strip().split()
mod = 1000000007

def s(a):
	print(' '.join(list(map(str, a))))
for i in range(I()):
	(n, x) = M()
	a = L()
	(o, e) = (0, 0)
	for i in a:
		if i % 2:
			o += 1
		else:
			e += 1
	if o == 0:
		ans = 'NO'
	elif e == 0:
		if x % 2:
			ans = 'YES'
		else:
			ans = 'NO'
	elif e >= x - 1:
		ans = 'YES'
	elif x == n:
		if sum(a) % 2:
			ans = 'YES'
		else:
			ans = 'NO'
	else:
		ans = 'YES'
	print(ans)


T = int(input())
for _ in range(T):
	(N, X) = map(int, input().split())
	A = [int(a) for a in input().split()]
	if X == N:
		print('Yes' if sum(A) % 2 else 'No')
	else:
		E = [a for a in A if a % 2 == 0]
		print('Yes' if 1 <= len(E) < N or (len(E) == 0 and X % 2) else 'No')


def fun(x):
	if int(x) % 2 == 0:
		return 0
	else:
		return 1

def solve(arr, n):
	arr.sort()
	temp = []
	for i in range(n):
		temp.append(arr[i])
	if sum(temp) % 2 == 1:
		return 'Yes'
	for i in range(n, len(arr)):
		temp.pop(0)
		temp.append(arr[i])
		if sum(temp) % 2 == 1:
			return 'Yes'
	return 'No'
for _ in range(int(input())):
	(a, n) = map(int, input().split())
	arr = list(map(fun, input().split()))
	if len(arr) == 1:
		if arr[0] == 0:
			print('No')
		else:
			print('Yes')
	else:
		print(solve(arr, n))


t = int(input())
for _ in range(t):
	(x, n) = map(int, input().split())
	L = list(map(int, input().split()))
	evenL = []
	oddL = []
	for i in range(x):
		if L[i] % 2 == 0:
			evenL.append(L[i])
		else:
			oddL.append(L[i])
	on = len(oddL)
	en = len(evenL)
	if n % 2 != 0:
		count = 0
		j = 0
		while n - 2 * j > 0:
			if on >= n - 2 * j and en >= 2 * j:
				print('Yes')
				break
			j += 1
		else:
			print('No')
	else:
		j = 0
		while n - 1 - 2 * j > 0:
			if on >= n - 2 * j - 1 and en >= 2 * j + 1:
				print('Yes')
				break
			j += 1
		else:
			print('No')


t = int(input())
for _ in range(t):
	(n, a) = map(int, input().split())
	o = 0
	d = list(map(int, input().split()))
	for i in range(n):
		if d[i] % 2 == 1:
			o += 1
	if o == 0 or (o % 2 == 0 and n == a) or (a % 2 == 0 and o == n):
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())

def sum_odd(items, x):
	counter = [0, 0]
	for num in items:
		if num % 2 == 0:
			counter[1] += 1
		else:
			counter[0] += 1
	for i in range(1, x + 1, 2):
		if counter[0] >= i and counter[1] >= x - i:
			return True
	return False
num_tests = inp()
for _ in range(num_tests):
	(num_items, x) = inlt()
	items = inlt()
	if sum_odd(items, x):
		print('Yes')
	else:
		print('No')


from itertools import combinations
t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split(' '))
	A = list(map(int, input().split(' ')))
	odd = 0
	even = 0
	for i in range(len(A)):
		if A[i] % 2 != 0:
			odd += 1
		else:
			even += 1
	if even >= x:
		if odd > 0:
			print('Yes')
		else:
			print('No')
	else:
		for i in range(1, odd + 1, 2):
			if 0 <= x - i <= even:
				print('Yes')
				break
		else:
			print('No')


T = int(input())
for i in range(T):
	dat = list(map(int, input().split()))
	n = dat[0]
	x = dat[1]
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for j in range(n):
		if a[j] % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	select_odd = 1
	choose = False
	while select_odd <= odd and select_odd <= x:
		if x - select_odd <= even:
			choose = True
			break
		else:
			select_odd = select_odd + 2
	if choose:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	l = list(input().split(' '))
	m = list(input().split(' '))
	n = int(l[0])
	x = int(l[1])
	ev = 0
	od = 0
	for i in range(n):
		if int(m[i]) % 2 == 0:
			ev += 1
		else:
			od += 1
	odr = x - ev
	if ev == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif od > 0:
		if ev >= x:
			print('Yes')
		elif odr % 2 != 0:
			print('Yes')
		elif od > odr:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


import sys
sys.setrecursionlimit(10 ** 6)
int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep='\n')

def II():
	return int(sys.stdin.readline())

def MI():
	return map(int, sys.stdin.readline().split())

def LI():
	return list(map(int, sys.stdin.readline().split()))

def LLI(rows_number):
	return [LI() for _ in range(rows_number)]

def SI():
	return sys.stdin.readline()[:-1]

def main():
	for _ in range(II()):
		(n, x) = MI()
		aa = LI()
		ok = True
		odd = 0
		for a in aa:
			odd += a & 1
		if odd == 0:
			ok = False
		if n == x and odd % 2 == 0:
			ok = False
		if n == odd and x % 2 == 0:
			ok = False
		if ok:
			print('Yes')
		else:
			print('No')
main()


for _ in range(int(input())):
	(x, y) = map(int, input().split())
	(*li,) = map(int, input().split())
	even = 0
	for i in li:
		if i % 2 == 0:
			even += 1
	odd = x - even
	if odd == 0:
		print('No')
	elif (odd - 1) // 2 * 2 + even >= y - 1 and even >= (0 if y % 2 else 1):
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	cnt = 0
	for x in a:
		if x & 1:
			cnt += 1
	even = n - cnt
	if cnt == 0:
		print('No')
		continue
	if cnt % 2 == 0:
		cnt -= 1
	if k & 1:
		if cnt >= k:
			print('Yes')
		else:
			tmp = k - cnt
			if even >= tmp:
				print('Yes')
			else:
				print('No')
	elif cnt >= k:
		if even >= 1:
			print('Yes')
		else:
			print('No')
	else:
		tmp = k - cnt
		if even >= tmp:
			print('Yes')
		else:
			print('No')


countTry = int(input())
for _ in range(countTry):
	string = input()
	strDigits = input()
	listStr = string.split()
	countElements = listStr[0]
	sumDigits = int(listStr[1])
	listDigits = strDigits.split()
	countEvens = 0
	countNotEvens = 0
	for digit in listDigits:
		intDigit = int(digit)
		if intDigit % 2 == 0:
			countEvens += 1
		else:
			countNotEvens += 1
	newCount = 0
	if countNotEvens > 0:
		if countNotEvens % 2 == 0:
			newCount += (countNotEvens // 2 - 1) * 2
		else:
			newCount += countNotEvens - 1
		if newCount >= sumDigits:
			if sumDigits % 2 == 0:
				newCount = sumDigits - 2
			else:
				newCount = sumDigits - 1
		raznost = sumDigits - countEvens
		if raznost - newCount > 0:
			if raznost % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif countNotEvens >= 1:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


def func(t):
	for i in range(t):
		n = list(map(int, input().split()))
		a = list(map(int, input().split()))
		x = n[1]
		odd = 0
		for i in a:
			if i % 2 != 0:
				odd += 1
		if odd == 0:
			print('NO')
			continue
		elif odd == n[0] and x % 2 == 0:
			print('NO')
			continue
		elif x == n[0] and odd % 2 == 0:
			print('NO')
			continue
		print('YES')
t = int(input())
func(t)


test = int(input())
for i in range(0, test):
	(n, x) = map(int, input().split())
	array = list(map(int, input().split()[:n]))
	odd = 0
	for k in array:
		if k % 2 != 0:
			odd = odd + 1
	if odd > 0:
		if x == n:
			if odd % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif n - odd > 0:
			print('Yes')
		elif x % 2 != 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


import sys
readline = sys.stdin.readline
ns = lambda : readline().rstrip()
ni = lambda : int(readline().rstrip())
nm = lambda : map(int, readline().split())
nl = lambda : list(map(int, readline().split()))

def solve():
	(n, k) = nm()
	a = [x & 1 for x in nl()]
	a.sort()
	lo = sum(a[:k])
	hi = sum(a[-k:])
	print('No' if lo == hi and (not lo & 1) else 'Yes')
	return
T = int(input())
for _ in range(T):
	solve()


from sys import stdin, gettrace
if gettrace():
	inputi = input
else:

	def input():
		return next(stdin)[:-1]

	def inputi():
		return stdin.buffer.readline()

def main():

	def solve():
		(n, x) = map(int, inputi().split())
		aa = [int(a) for a in inputi().split()]
		if x == n:
			print('Yes' if sum(aa) % 2 == 1 else 'No')
			return
		oc = len([a for a in aa if a % 2 == 1])
		if oc == 0:
			print('No')
			return
		if oc == n:
			print('Yes' if x % 2 == 1 else 'No')
			return
		print('Yes')
	q = int(inputi())
	for _ in range(q):
		solve()
main()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split(' '))
	a = list(map(int, input().split(' ')))
	count = [0, 0]
	for num in a:
		count[num % 2] += 1
	ans = 'No'
	for odds in range(1, x + 1, 2):
		if count[1] >= odds and x - odds <= count[0]:
			ans = 'Yes'
	print(ans)


def solve():
	(n, x) = map(int, input().split())
	a = [int(s) for s in input().split()]
	b = list()
	o = 0
	e = 0
	for i in range(n):
		b.append(a[i] % 2)
		if b[i] == 0:
			e += 1
		else:
			o += 1
	if x == n:
		s = sum(b)
		if s % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x % 2 == 0:
		if o > 0 and e > 0:
			print('Yes')
		else:
			print('No')
	elif o >= x:
		print('Yes')
	elif o == 0:
		print('No')
	else:
		print('Yes')

def main():
	t = int(input())
	for _ in range(t):
		solve()
main()


def odd_sum(n, x, a):
	if n == x:
		return sum(a) % 2 != 0
	o_count = 0
	e_count = 0
	for i in a:
		if i % 2 == 0:
			e_count += 1
		else:
			o_count += 1
	if x % 2 == 0:
		r_o = x - 1
	else:
		r_o = x
	r_e = x - r_o
	while r_o >= 1:
		if r_o <= o_count:
			return r_e <= e_count
		else:
			r_o -= 2
			r_e += 2
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if odd_sum(n, x, a):
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout

def main():
	t = int(stdin.readline())
	for _ in range(t):
		(n, x) = list(map(int, stdin.readline().split()))
		arr = list(map(int, stdin.readline().split()))
		even = 0
		odd = 0
		for ele in arr:
			if ele % 2 == 0:
				even += 1
			else:
				odd += 1
		if odd > 0 and odd % 2 == 0:
			odd -= 1
		if odd == 0:
			stdout.write('NO\n')
			continue
		if x <= odd and x % 2 == 1:
			stdout.write('YES\n')
			continue
		if x - odd <= even and even > 0:
			stdout.write('YES\n')
			continue
		stdout.write('NO\n')
main()


n = int(input())
for i in range(n):
	(a, b) = map(int, input().split())
	c = list(map(int, input().split()))
	even = 0
	odd = 0
	for j in range(a):
		if c[j] % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if a == b:
		if sum(c) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif b <= odd:
		if b % 2 == 1:
			print('Yes')
		elif 1 <= even and even != 0:
			print('Yes')
		else:
			print('No')
	elif b - odd <= even and odd != 0 and (odd % 2 == 1):
		print('Yes')
	elif b - even <= odd and odd != 0:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(even, odd) = (0, 0)
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	for i in range(1 + x):
		j = x - i
		if i <= even and j <= odd and (j % 2 == 1):
			print('YES')
			break
	else:
		print('NO')


import math
import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even = 0
	odd = 0
	for elem in a:
		if elem % 2 == 0:
			even += 1
		else:
			odd += 1
	ans = 'No'
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			ans = 'Yes'
			break
	print(ans)


from collections import defaultdict
import sys, math
f = None
try:
	f = open('q1.input', 'r')
except IOError:
	f = sys.stdin
if 'xrange' in dir(__builtins__):
	range = xrange

def print_case_iterable(case_num, iterable):
	print('Case #{}: {}'.format(case_num, ' '.join(map(str, iterable))))

def print_case_number(case_num, iterable):
	print('Case #{}: {}'.format(case_num, iterable))

def print_iterable(A):
	print(' '.join(A))

def read_int():
	return int(f.readline().strip())

def read_int_array():
	return [int(x) for x in f.readline().strip().split(' ')]

def rns():
	a = [x for x in f.readline().split(' ')]
	return (int(a[0]), a[1].strip())

def read_string():
	return list(f.readline().strip())

def bi(x):
	return bin(x)[2:]
from collections import deque
import math
NUMBER = 10 ** 9 + 7

def factorial(n):
	M = NUMBER
	f = 1
	for i in range(1, n + 1):
		f = f * i % M
	return f

def mult(a, b):
	return a * b % NUMBER

def minus(a, b):
	return (a - b) % NUMBER

def plus(a, b):
	return (a + b) % NUMBER

def egcd(a, b):
	if a == 0:
		return (b, 0, 1)
	else:
		(g, y, x) = egcd(b % a, a)
		return (g, x - b // a * y, y)

def modinv(a):
	m = NUMBER
	(g, x, y) = egcd(a, m)
	if g != 1:
		raise Exception('modular inverse does not exist')
	else:
		return x % m

def choose(n, k):
	if n < k:
		assert false
	return mult(factorial(n), modinv(mult(factorial(k), factorial(n - k))))
from collections import deque, defaultdict
import heapq

def solution(a, n, x):
	odd = 0
	even = 0
	for d in a:
		if d % 2:
			odd += 1
		else:
			even += 1
	if x % 2:
		for j in range(0, x, 2):
			if even >= j and odd >= x - j:
				return 'Yes'
	for j in range(1, x, 2):
		if odd >= j and even >= x - j:
			return 'Yes'
	return 'No'

def main():
	T = read_int()
	for i in range(T):
		(n, x) = read_int_array()
		a = read_int_array()
		x = solution(a, n, x)
		if 'xrange' not in dir(__builtins__):
			print(x)
		else:
			(print >> output, str(x))
	if 'xrange' in dir(__builtins__):
		print(output.getvalue())
		output.close()
if 'xrange' in dir(__builtins__):
	import cStringIO
	output = cStringIO.StringIO()
main()


for _ in range(int(input())):
	(n, x) = tuple(map(int, input().split()))
	arr = list(map(int, input().split()))
	cnt = 0
	for i in arr:
		if i % 2 == 1:
			cnt += 1
	chet_cnt = n - cnt
	if cnt == 0:
		print('No')
		continue
	will_cnt = cnt
	if cnt % 2 == 0:
		will_cnt -= 1
	if will_cnt <= x:
		if chet_cnt >= x - will_cnt:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 1:
		print('Yes')
	elif chet_cnt >= 1:
		print('Yes')
	else:
		print('No')


from collections import defaultdict
import math
import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))

def input():
	return sys.stdin.readline().rstrip('\r\n')
t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().split()]
	l = list([int(x) for x in input().split()])
	o = 0
	e = 0
	f = 0
	lo = []
	le = []
	krish = 1
	res = krish
	for i in range(n):
		if l[i] % 2 == 0:
			e += 1
			le.append(l[i])
		else:
			o += 1
			lo.append(l[i])
	if o == 0:
		print('No')
	else:
		x -= 1
		o -= 1
		while x > 0:
			if o >= 2 and x >= 2:
				o -= 2
				x -= 2
			elif e > 0:
				x -= 1
				e -= 1
			else:
				print('No')
				f = 1
				break
		if f == 0:
			print('Yes')


import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, copy, functools
sys.setrecursionlimit(10 ** 7)
inf = 10 ** 20
eps = 1.0 / 10 ** 10
mod = 10 ** 9 + 7
mod2 = 998244353
dd = [(-1, 0), (0, 1), (1, 0), (0, -1)]
ddn = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]

def LI():
	return list(map(int, sys.stdin.readline().split()))

def LLI():
	return [list(map(int, l.split())) for l in sys.stdin.readlines()]

def LI_():
	return [int(x) - 1 for x in sys.stdin.readline().split()]

def LF():
	return [float(x) for x in sys.stdin.readline().split()]

def LS():
	return sys.stdin.readline().split()

def I():
	return int(sys.stdin.readline())

def F():
	return float(sys.stdin.readline())

def S():
	return input()

def pf(s):
	return print(s, flush=True)

def pe(s):
	return print(str(s), file=sys.stderr)

def JA(a, sep):
	return sep.join(map(str, a))

def JAA(a, s, t):
	return s.join((t.join(map(str, b)) for b in a))

def main():
	t = I()
	rr = []
	for _ in range(t):
		(n, m) = LI()
		a = LI()
		f = [False] * 2
		for c in a:
			f[c % 2] = True
		if not f[1] or (n == m and sum(a) % 2 == 0) or (not f[0] and m % 2 == 0):
			rr.append('No')
		else:
			rr.append('Yes')
	return JA(rr, '\n')
print(main())


def fun(t):
	for T in range(t):
		odd = 0
		(n, x) = map(int, input().split())
		Ar = list(map(int, input().split()))
		for i in Ar:
			if i % 2:
				odd += 1
		if odd == 0:
			print('No')
		elif x % 2 == 0 and n == odd:
			print('No')
		elif x == n and odd % 2 == 0:
			print('No')
		else:
			print('Yes')
fun(int(input()))


import sys
readline = sys.stdin.readline
flush = sys.stdout.flush

def solve(arr, N, X):
	odd = 0
	even = 0
	for x in arr:
		if x % 2:
			odd += 1
		else:
			even += 1
	for i in range(1, odd + 1):
		if i % 2 and i <= X and (X - i <= even):
			return True
	return False
t = int(input())
for i in range(t):
	(N, X) = [int(_) for _ in readline().split()]
	points = [int(_) for _ in readline().split()]
	if solve(points, N, X):
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
t = int(stdin.readline())
result = []
while t > 0:
	(n, x) = [int(x) for x in stdin.readline().split()]
	arr = [int(x) for x in stdin.readline().split()]
	even_count = odd_count = 0
	for num in arr:
		if num % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	if x % 2 == 0:
		if odd_count % 2 == 0:
			odd_taken = max(0, min(x - 1, odd_count - 1))
		else:
			odd_taken = max(0, min(x - 1, odd_count))
		if odd_taken != 0 and even_count >= x - odd_taken:
			print('Yes')
		else:
			print('No')
	else:
		if odd_count % 2 == 0:
			odd_taken = max(0, min(x, odd_count - 1))
		else:
			odd_taken = max(0, min(x, odd_count))
		if odd_taken != 0 and even_count >= x - odd_taken:
			print('Yes')
		else:
			print('No')
	t -= 1


import math
import sys
input = sys.stdin.readline
t = int(input())
for cs in range(t):
	(n, x) = map(int, input().split())
	a = [int(_) for _ in input().split()]
	odd = 0
	for i in a:
		if i % 2 == 1:
			odd = odd + 1
	if odd == 0 or (odd == n and x % 2 == 0) or (x == n and sum(a) % 2 == 0):
		print('No')
	else:
		print('Yes')


from sys import stdin, stdout
from math import gcd, ceil, sqrt
from collections import Counter
ii1 = lambda : int(stdin.readline().strip())
is1 = lambda : stdin.readline().strip()
iia = lambda : list(map(int, stdin.readline().strip().split()))
isa = lambda : stdin.readline().strip().split()
mod = 1000000007
tc = ii1()
for _ in range(tc):
	(n, x) = iia()
	arr = iia()
	odd = even = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		x -= 1
		odd -= 1
		old = even
		while x > 0:
			if even > 0:
				even -= 1
				x -= 1
			elif x > 1 and odd > 1:
				odd -= 2
				x -= 2
			elif x == 1 and old > 0 and (odd > 1):
				x = 0
				odd -= 2
			else:
				break
		if x == 0:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = [int(num) for num in input().split()]
	l1 = [int(x) % 2 for x in input().split()]
	c0 = l1.count(0)
	c1 = len(l1) - c0
	for i in range(1, x + 1, 2):
		if i <= c1 and x - i <= c0:
			print('Yes')
			break
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	p = 0
	q = 0
	l = list(map(int, input().split()))
	for i in l:
		if i % 2 == 0:
			p += 1
		else:
			q += 1
	f = 0
	for i in range(q + 1):
		for j in range(p + 1):
			if i + j == x and i % 2 == 1:
				f = 1
				break
		if f == 1:
			break
	if f:
		print('Yes')
	else:
		print('No')


p = int(input())
for i in range(p):
	nech = 0
	chet = 0
	(m, k) = map(int, input().split())
	s = list(map(int, input().split()))
	if m == k:
		if sum(s) % 2 == 1:
			print('YES')
		else:
			print('NO')
	else:
		for j in range(m):
			if s[j] % 2 == 1:
				nech += 1
			else:
				chet += 1
		if chet == m:
			print('NO')
		elif nech == m:
			if k % 2 == 1:
				print('YES')
			else:
				print('NO')
		else:
			print('YES')


def fn():
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(oc, ec) = (0, 0)
	for i in range(n):
		if l[i] % 2 != 0:
			oc += 1
		else:
			ec += 1
	if oc % 2 == 0:
		oc -= 1
	if oc > 0 and oc + ec >= x:
		if ec == 0 and x % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('No')
for _ in range(int(input())):
	fn()


from sys import stdin, stdout
q = int(input())
for i in range(q):
	(n, x) = list(map(int, stdin.readline().split()))
	a = list(map(int, stdin.readline().split()))
	even = 0
	odd = 0
	flag = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	for i in range(1, x + 1, 2):
		if odd >= i and even >= x - i:
			flag = 1
			break
	if flag == 1:
		print('yes')
	else:
		print('no')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	array = input().split()
	array = [int(j) for j in array]
	impar = 0
	par = 0
	for j in range(n):
		if array[j] % 2 == 0:
			par += 1
		else:
			impar += 1
	diferenca = x - min(par, x - 1)
	if diferenca % 2 == 0:
		diferenca += 1
	if impar >= diferenca and diferenca <= x:
		print('Yes')
	else:
		print('No')


t = int(input())
for case in range(t):
	(n, x) = [int(s) for s in input().split(' ')]
	a = [int(s) for s in input().split(' ')]
	b = [c % 2 for c in a]
	if sum(b) == 0 or (sum(b) % 2 == 0 and n == x) or (x % 2 == 0 and sum(b) == n):
		ans = 'No'
	else:
		ans = 'Yes'
	print(ans)


import math, sys, bisect, heapq
from collections import defaultdict, Counter, deque
from itertools import groupby, accumulate
input = iter(sys.stdin.buffer.read().decode().splitlines()).__next__
ilele = lambda : map(int, input().split())
alele = lambda : list(map(int, input().split()))

def Y(c):
	print(['NO', 'YES'][c])

def y(c):
	print(['no', 'yes'][c])

def Yy(c):
	print(['No', 'Yes'][c])
for _ in range(int(input())):
	(n, x) = ilele()
	A = alele()
	e = 0
	o = 0
	for i in A:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if x == n:
		Yy(o % 2 != 0)
	elif o > 0:
		if x % 2 == 0:
			Yy(e > 0)
		else:
			Yy(1)
	else:
		Yy(0)


def main():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(cnto, cnte) = (0, 0)
	for i in range(n):
		if a[i] % 2:
			cnto += 1
		else:
			cnte += 1
	if cnte + cnto < x or cnto == 0 or (cnte == 0 and x % 2 == 0):
		print('No')
	elif n == x and cnto % 2 == 0:
		print('No')
	else:
		print('Yes')

def test():
	t = int(input())
	while t:
		main()
		t -= 1
test()


test = int(input())
for _ in range(test):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in range(n):
		if arr[i] % 2:
			odd += 1
		else:
			even += 1
	flag = False
	if odd == 0:
		print('No')
	elif x % 2:
		oddy = 0
		evy = x - 1
		while oddy <= x - 1:
			if oddy <= odd - 1 and evy <= even:
				flag = True
				break
			oddy += 2
			evy -= 2
		if flag:
			print('Yes')
		else:
			print('No')
	else:
		evy = 1
		oddy = x - 2
		while evy <= x - 1:
			if oddy <= odd - 1 and evy <= even:
				flag = True
				break
			oddy -= 2
			evy += 2
		if flag:
			print('Yes')
		else:
			print('No')


import os
import sys
from math import *
from collections import *
from bisect import *
from io import BytesIO, IOBase

def vsInput():
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')

def value():
	return tuple(map(int, input().split()))

def array():
	return [int(i) for i in input().split()]

def Int():
	return int(input())

def Str():
	return input()

def arrayS():
	return [i for i in input().split()]
for _ in range(Int()):
	(n, k) = value()
	a = array()
	odd = [i for i in a if i % 2]
	even = n - len(odd)
	odd = len(odd)
	if odd == 0:
		print('No')
	else:
		odd -= 1
		k -= 1
		f = 0
		for i in range(even + 1):
			need = k - i
			if need % 2 == 0 and need <= odd:
				print('Yes')
				f = 1
				break
		if f == 0:
			print('No')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ev = 0
	od = 0
	for i in range(n):
		if a[i] % 2 == 0:
			ev += 1
		else:
			od += 1
	bb = []
	for i in range(x):
		bb.append(2 * i + 1)
	now = 0
	for i in range(len(bb)):
		if bb[i] <= od and x - bb[i] <= ev and (x - bb[i] >= 0):
			now = 1
	if now == 1:
		print('YES')
	else:
		print('NO')


def sol(n, k, arr):
	(d0, d1) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			d0 += 1
		else:
			d1 += 1
	if d1 == 0:
		return 'NO'
	if d0 == 0:
		if k % 2 == 0:
			return 'NO'
		return 'YES'
	if k == n:
		if d1 % 2 == 0:
			return 'NO'
		return 'YES'
	return 'YES'
for i in range(int(input())):
	(n, k) = [int(s) for s in input().split()]
	arr = [int(s) for s in input().split()]
	print(sol(n, k, arr))


t = int(input())
lst = list()
odd = 0
even = 0
while t:
	t = t - 1
	str1 = input()
	(n, x) = map(int, str1.split())
	str1 = input()
	lst = list(map(int, str1.split()))
	for i in range(0, n):
		if lst[i] % 2 == 0:
			even = even + 1
		elif lst[i] % 2 != 0:
			odd = odd + 1
	if odd == 0:
		print('No')
	else:
		if x % 2 == 0:
			if odd % 2 == 0:
				c = odd - 1
			else:
				c = odd
			if c + even >= x and even != 0:
				print('Yes')
			else:
				print('No')
		if x % 2 != 0:
			if even % 2 == 0:
				c = even
			else:
				c = even - 1
			if x - c <= odd:
				print('Yes')
			else:
				print('No')
	odd = 0
	even = 0


for q in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ch = 0
	nch = 0
	for i in range(len(a)):
		if a[i] % 2 == 0:
			ch += 1
		else:
			nch += 1
	if nch == 0:
		print('No')
	elif ch == 0 and x % 2 == 0:
		print('No')
	elif nch % 2 == 0 and x == n:
		print('No')
	else:
		print('Yes')


def cap(x, a):
	(o, e) = (0, 0)
	for k in a:
		if k % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	else:
		if o % 2 == 0:
			o -= 1
		if o >= x:
			if x % 2 == 0:
				o = x - 1
			else:
				o = x
		if x - o <= e:
			print('Yes')
		else:
			print('No')
n = int(input())
for i in range(n):
	x = list(map(int, input().split(' ')))
	a = list(map(int, input().split(' ')))
	cap(x[1], a)


def checker(n, x, lst):
	cnt1 = len([elem for elem in lst if elem % 2 == 1])
	cnt2 = len([elem for elem in lst if elem % 2 != 1])
	if n == x:
		return 'YES' if cnt1 % 2 == 1 else 'NO'
	else:
		return 'NO' if cnt2 == 0 and x % 2 == 0 or cnt1 == 0 else 'YES'
for _ in range(int(input())):
	(N, X) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	print(checker(N, X, a))


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odds = len([i for i in arr if i % 2 != 0])
	evens = len(arr) - odds
	yes = False
	for i in range(1, odds + 1, 2):
		if i > x:
			break
		if x - i <= evens:
			yes = True
			break
	if yes:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = sum((int(x) % 2 for x in input().split()))
	b = n - a
	a_min = min(1, a)
	a_max = max(0, (a + 1) // 2 * 2 - 1)
	print('Yes' if a > 0 and b >= (x + 1) % 2 and (x <= a_max + b) else 'No')


kl = int(input())
for l in range(kl):
	(n, m) = map(int, input().split())
	(ke, kn) = (0, 0)
	for i in input().split():
		if int(i) % 2 == 0:
			kn += 1
		else:
			ke += 1
	if n == m:
		if ke % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif ke == 0:
		print('No')
	elif kn == 0:
		if m % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


from collections import defaultdict as dd
import math
import sys
import string
input = sys.stdin.readline

def nn():
	return int(input())

def li():
	return list(input())

def mi():
	return map(int, input().split())

def lm():
	return list(map(int, input().split()))
q = nn()
for _ in range(q):
	(n, t) = mi()
	l = lm()
	evens = 0
	odds = 0
	for num in l:
		if num % 2 == 0:
			evens += 1
		else:
			odds += 1
	if evens > 0 and odds > 0 and (t < n):
		print('YES')
	elif odds == 0:
		print('NO')
	elif t == n:
		if sum(l) % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif t % 2 == 1:
		print('YES')
	else:
		print('NO')


t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = [int(x) for x in input().split()]
	if n == x:
		if sum(a) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		ev = 0
		od = 0
		for i in range(n):
			if a[i] % 2 == 0:
				ev += 1
			else:
				od += 1
		if od == 0:
			print('NO')
		else:
			od -= 1
			x -= 1
			temp = od // 2
			if x <= ev:
				print('YES')
			elif x % 2 == 0 and x <= 2 * temp:
				print('YES')
			elif x % 2 == 0 and x > 2 * temp:
				x -= 2 * temp
				if x <= ev:
					print('YES')
				else:
					print('NO')
			elif ev == 0:
				print('NO')
			else:
				x -= 1
				ev -= 1
				if x % 2 == 0 and x <= 2 * temp:
					print('YES')
				elif x % 2 == 0 and x > 2 * temp:
					x -= 2 * temp
					if x <= ev:
						print('YES')
					else:
						print('NO')


t = int(input())
for _ in range(t):
	(_, x) = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	odd = [x for x in arr if x % 2 != 0]
	even = [x for x in arr if x % 2 == 0]
	no_of_odd = len(odd)
	no_of_even = len(even)
	for i in range(1, x + 1, 2):
		if i <= no_of_odd and x - i <= no_of_even:
			print('Yes')
			break
	else:
		print('No')


from sys import stdin, stdout
import sys
t = int(stdin.readline().strip())
for _ in range(t):
	(n, x) = stdin.readline().strip().split(' ')
	(n, x) = (int(n), int(x))
	arr = list(map(int, stdin.readline().strip().split(' ')))
	tp = 0
	for i in range(n):
		arr[i] = arr[i] % 2
		tp = (tp + arr[i]) % 2
	if 1 not in arr or (0 not in arr and x % 2 == 0) or (x == n and tp == 0):
		stdout.write(str('No\n'))
	else:
		stdout.write(str('Yes\n'))


for _ in range(int(input())):
	(c, d) = (0, 0)
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	for i in l:
		if i % 2 == 0:
			c += 1
		else:
			d += 1
	ans = 'NO'
	for i in range(1, b + 1, 2):
		if d >= i and c >= b - i:
			ans = 'YES'
			break
	print(ans)


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = tuple(map(int, input().split()))
	if x == n:
		possible = sum(a) % 2
	elif not [1 for ai in a if ai % 2]:
		possible = False
	elif [1 for ai in a if not ai % 2]:
		possible = True
	else:
		possible = x % 2
	if possible:
		print('Yes')
	else:
		print('No')


t = int(input())
for case in range(t):
	(n, x) = map(int, input().split())
	a = [int(w) for w in input().split()]
	odds = sum((w % 2 for w in a))
	evens = n - odds
	if odds == 0:
		print('No')
	else:
		x -= 1
		odds -= 1
		while odds >= 2 and x >= 2:
			odds -= 2
			x -= 2
		while evens and x:
			evens -= 1
			x -= 1
		if not x:
			print('Yes')
		else:
			print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	k = []
	for t in l:
		if t % 2 == 0:
			k.append(0)
		else:
			k.append(1)
	k.sort()
	i = 0
	j = x
	f = 0
	while j <= n:
		z = sum(k[i:j])
		if z % 2:
			f = 1
			break
		i += 1
		j += 1
	print('YES' if f else 'NO')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	od = []
	ev = []
	for i in range(n):
		if a[i] % 2 != 0:
			od.append(a[i])
		else:
			ev.append(a[i])
	n1 = len(od)
	n2 = len(ev)
	if n1 == 0:
		print('No')
	elif x <= n1:
		if x % 2 != 0:
			print('Yes')
		elif n2 >= 1:
			print('Yes')
		else:
			print('No')
	else:
		if n1 % 2 == 0:
			n1 -= 1
		if x - n1 <= n2:
			print('Yes')
		else:
			print('No')
	t -= 1


from sys import stdin, stdout
t = int(stdin.readline())
for _ in range(t):
	(n, x) = map(int, stdin.readline().split())
	a = list(map(int, stdin.readline().split()))
	s = sum(a)
	odd = 0
	for ai in a:
		if ai % 2 == 1:
			odd += 1
	even = n - odd
	if odd == 0:
		print('No')
		continue
	if even == 0 and x % 2 == 0:
		print('No')
		continue
	if x % 2 == 1 and x == n and (even % 2 == 1):
		print('No')
	elif x % 2 == 0 and x == n and (even % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ceven = 0
	codd = 0
	for j in range(len(a)):
		if a[j] % 2 == 0:
			ceven += 1
		else:
			codd += 1
	if codd == n and x % 2 == 0:
		print('NO')
	elif codd % 2 != 0:
		print('YES')
	elif n > x and codd != 0:
		print('YES')
	else:
		print('NO')


t = int(input())
while t > 0:
	nx = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	cnt = 0
	ecnt = 0
	summ = sum(arr)
	for i in range(0, len(arr)):
		if arr[i] % 2 != 0:
			cnt += 1
		else:
			ecnt += 1
	if nx[0] == nx[1] and summ % 2 or (nx[0] != nx[1] and (cnt and ecnt or (nx[1] % 2 and cnt))):
		print('Yes')
	else:
		print('No')
	t -= 1


rr = lambda : input().strip()
rrm = lambda : map(int, rr().split())

def solve(n, x, a):
	(o, e) = (0, 0)
	for i in range(n):
		if a[i] % 2:
			o += 1
		else:
			e += 1
	if n == x:
		if o % 2:
			return 'Yes'
		else:
			return 'No'
	if o == 0:
		return 'No'
	elif o >= x:
		if x % 2:
			return 'Yes'
		elif e == 0:
			return 'No'
		else:
			return 'Yes'
	elif o < x:
		return 'Yes'
T = int(rr())
for _ in range(T):
	(n, x) = rrm()
	a = list(rrm())
	ans = solve(n, x, a)
	print(ans)


for i in range(int(input())):
	(n, k) = list(map(int, input().split()))
	s = list(map(int, input().split()))[:n]
	result = 0
	even = 0
	odd = 0
	for j in s:
		if j % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		k -= 1
		odd -= 1
		while k > 0:
			if odd >= 2 and k >= 2:
				odd -= 2
				k -= 2
			elif even != 0:
				even -= 1
				k -= 1
			else:
				break
		if k != 0:
			print('No')
		else:
			print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	c = 0
	d = 0
	flag = 0
	if x == 1:
		for q in lst:
			if q % 2 != 0:
				print('YES')
				break
		else:
			print('NO')
	else:
		for j in lst:
			if j % 2 == 0:
				c += 1
			else:
				d += 1
		for k in range(1, x + 1, 2):
			if d >= k and c >= x - k:
				print('YES')
				flag = 1
				break
		if flag == 0:
			print('NO')


t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split(' ')))
	array = list(map(int, input().split(' ')))
	(p, np) = (0, 0)
	for j in range(n):
		if array[j] % 2 == 1:
			np += 1
		else:
			p += 1
	if np == 0:
		print('No')
		continue
	else:
		x -= 1
		np -= 1
	if x % 2 == 1 and p == 0:
		print('No')
		continue
	if p + np - np % 2 >= x:
		print('Yes')
	else:
		print('No')


test = int(input())
while test:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = even = 0
	for i in range(n):
		if a[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	if x % 2 == 1:
		if odd != 0:
			if odd % 2 == 1:
				odd = min(odd, x)
			else:
				odd = min(odd - 1, x)
			if odd + even >= x:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
	elif even != 0 and odd != 0:
		if odd % 2 == 1:
			odd = min(odd, x)
		else:
			odd = min(odd - 1, x)
		if odd + even >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
	test -= 1


def f(ls, x):
	if len(ls) == 1:
		return ls[0] % 2 == 0 and 'NO' or 'YES'
	even = 0
	odd = 0
	for e in ls:
		if e % 2 == 0:
			even += 1
		else:
			odd += 1
	for i in range(1, odd + 1, 2):
		if even >= x - i and i <= x:
			return 'YES'
	return 'NO'
t = input()
for e in range(int(t)):
	(n, x) = input().split(' ')
	a = input().split(' ')
	print(f([int(n) for n in a], int(x)))


for test_var in range(int(input())):
	(a, b) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = [x for x in arr if x % 2]
	even = [x for x in arr if not x % 2]
	take_odd = min(len(odd), b)
	take_odd -= not take_odd % 2
	print('YES') if len(even) >= b - take_odd and take_odd >= 1 else print('NO')


def solve():
	(N, x) = input().split()
	N = int(N)
	x = int(x)
	l = [int(m) for m in input().split()]
	odd = 0
	even = 0
	for i in l:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if odd == 0:
		return 'No'
	elif even == 0:
		if x % 2 == 1:
			return 'Yes'
	elif even + odd < x:
		return 'No'
	elif even + odd == x:
		if sum(l) % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	elif even >= x - 1:
		return 'Yes'
	elif x - even <= odd and (x - even) % 2 == 1:
		return 'Yes'
	elif x - even + 1 <= odd and (x - even + 1) % 2 == 1:
		return 'Yes'
	return 'No'
T = int(input())
for m in range(1, T + 1):
	print(solve())


t = int(input())
for _ in range(t):
	(n, x) = [int(i) for i in input().split()]
	arr = [int(i) for i in input().split()]
	odd = 0
	even = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd >= 1:
		rem = min(x, odd)
		if rem == x:
			if rem % 2 == 0:
				if even >= 1:
					print('Yes')
				else:
					print('No')
			else:
				print('Yes')
		else:
			if rem % 2 == 0:
				rem -= 1
			diff = x - rem
			if even >= diff:
				print('Yes')
			else:
				print('No')
	else:
		print('No')


from sys import stdin
from math import sqrt, gcd
from collections import deque
input = stdin.readline
R = lambda : map(int, input().split())
I = lambda : int(input())
S = lambda : input().rstrip('\n')
lcm = lambda x, y: x * y // gcd(x, y)
hg = lambda x, y: (y + x - 1) // x * x
for _ in range(I()):
	(n, x) = R()
	e = o = 0
	for i in R():
		if i % 2:
			o += 1
		else:
			e += 1
	if x % 2:
		k = 0
		for i in range(1, x + 1, 2):
			if o >= i and e >= x - i:
				k = 1
				break
		if k:
			print('YES')
		else:
			print('NO')
	else:
		k = 0
		for i in range(1, x + 1, 2):
			if e >= i and o >= x - i:
				k = 1
				break
		if k:
			print('YES')
		else:
			print('NO')


for _ in range(0, int(input())):
	(n, x) = map(int, input().split())
	array = list(map(int, input().split()))
	counter = 0
	for i in array:
		if i % 2 == 0:
			counter += 1
	even = counter
	odd = n - even
	if odd == 0:
		print('No')
	elif even == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif n == x and odd % 2 == 0:
		print('No')
	else:
		print('Yes')


import sys
t = int(input())
for k in range(t):
	(n, x) = map(int, input().rstrip().split())
	arr = list(map(int, input().rstrip().split()))
	flag = False
	count_odd = 0
	for i in range(n):
		if arr[i] % 2 != 0:
			count_odd += 1
		if i + 1 == x:
			if count_odd % 2:
				flag = True
				break
		elif i + 1 > x:
			even = i + 1 - count_odd
			if count_odd >= 1 and even >= 1:
				flag = True
				break
	if flag == True:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	(cnt_odd, cnt_even) = (0, 0)
	for i in range(n):
		if arr[i] % 2 == 0:
			cnt_even += 1
		else:
			cnt_odd += 1
	if x == n:
		if cnt_odd % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif cnt_even == n:
		print('No')
	elif cnt_odd == n:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x <= cnt_odd:
		print('Yes')
	elif cnt_odd % 2 == 0 and x - cnt_odd - 1 <= cnt_even or (cnt_odd % 2 != 0 and x - cnt_odd <= cnt_even):
		print('Yes')
	else:
		print('No')


cases = int(input())
liste = []
compteur = 0
for loop in range(cases):
	(n, x) = map(int, input().split())
	liste = [int(x) for x in input().split()]
	if x == len(liste):
		if sum(liste) % 2 == 1:
			print('yes')
		else:
			print('no')
		liste = []
	else:
		for k in range(len(liste)):
			if liste[k] % 2 == 0:
				compteur += 1
			nbodd = n - compteur
		if nbodd == n and x % 2 == 0 or nbodd == 0:
			print('no')
		else:
			print('yes')
	compteur = 0
	liste = []


from sys import stdin
input = stdin.readline

def main(odd, even, x):
	for i in range(1, x + 1, 2):
		j = x - i
		if i <= odd and j <= even:
			return 'YES'
	return 'NO'
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	array = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in range(n):
		if array[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	print(main(odd, even, x))


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	num = list(map(int, input().split()))
	OddCount = 0
	EvenCount = 0
	for i in num:
		if i % 2 != 0:
			OddCount += 1
		else:
			EvenCount += 1
	maxOdd = min(x, OddCount)
	flag = False
	for i in range(1, maxOdd + 1, 2):
		need = x - i
		if need <= EvenCount:
			flag = True
	if flag:
		print('Yes')
	else:
		print('No')


from collections import defaultdict
from collections import Counter
import bisect
import sys
input = sys.stdin.readline

def solve(n, x, a):
	b = list(map(lambda y: y % 2, a))
	cnt = Counter(b)
	if cnt[1] == 0:
		print('No')
		return 0
	if n == x and cnt[1] % 2 == 0:
		print('No')
		return 0
	if cnt[1] == n and x % 2 == 0:
		print('No')
		return 0
	print('Yes')

def main():
	t = int(input())
	for i in range(t):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		solve(n, x, a)
main()


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		evennums = len([z for z in a if z % 2 == 0])
		oddnums = len([z for z in a if z % 2 == 1])
		if oddnums > 0:
			if x % 2 == 0:
				if evennums > 0:
					print('Yes')
				else:
					print('No')
			else:
				print('Yes')
		else:
			print('No')


import io, os
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
import sys

def solve(n, x, A):
	(odd, even) = (0, 0)
	for a in A:
		if a % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		return 'No'
	if even == 0:
		if x % 2 == 1:
			return 'Yes'
		return 'No'
	if x == n:
		if odd % 2 == 1:
			return 'Yes'
		return 'No'
	return 'Yes'

def main():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		A = tuple(map(int, input().split()))
		ans = solve(n, x, A)
		sys.stdout.write(ans + '\n')
main()


for i in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	s = []
	d = []
	y = 0
	for i in range(n):
		if l[i] % 2 == 0:
			s.append(l[i])
		else:
			d.append(l[i])
	if len(d) == 0:
		print('No')
	elif len(s) != 0:
		if len(d) % 2 == 0:
			if len(d) - 1 + len(s) >= x:
				print('Yes')
			else:
				print('No')
		elif len(s) + len(d) >= x:
			print('Yes')
		else:
			print('No')
	elif x % 2 != 0 and x <= len(d):
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	o = 0
	e = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			e += 1
		else:
			o += 1
	ans = 'NO'
	for i in range(1, min(o + 1, k + 1), 2):
		if e >= k - i:
			ans = 'YES'
			break
	print(ans)


tc = int(input().strip())
while tc:
	(n, x) = map(int, input().strip().split())
	arr = list(map(int, input().strip().split()))
	od = 0
	for a in arr:
		if a % 2 == 1:
			od += 1
	ev = n - od
	ans = False
	if od:
		if x >= od:
			if od % 2 == 1:
				ans = x - od <= ev
			else:
				ans = x - od + 1 <= ev
		elif x % 2 == 1:
			ans = True
		else:
			ans = ev > 0
	if ans:
		print('YES')
	else:
		print('NO')
	tc -= 1


t = int(input())
for case in range(t):
	(n, x) = map(int, input().split())
	array = [int(x) for x in input().split()]
	cnto = 0
	cnte = 0
	for i in array:
		if i % 2 == 0:
			cnte += 1
		else:
			cnto += 1
	answer = False
	for i in range(1, x + 1):
		if i % 2 == 1:
			if cnto >= i and cnte >= x - i:
				answer = True
	if answer:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	lst = list(map(int, input().split()))
	(ev, od) = (0, 0)
	for i in lst:
		if i & 1 == 0:
			ev += 1
		else:
			od += 1
	if od != 0:
		od -= 1
		x -= 1
		if od & 1 == 1:
			od -= 1
		if od < x:
			if x - od <= ev:
				print('Yes')
				continue
		elif ev > 0 or x & 1 == 0:
			print('Yes')
			continue
	print('No')


t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	flag = 0
	co = 0
	ce = 0
	for i in arr:
		if i % 2 == 0:
			ce += 1
		else:
			co += 1
	for i in range(1, min(co, x) + 1, 2):
		if ce >= x - i:
			flag = 1
	if flag == 0:
		print('NO')
	else:
		print('Yes')


def f(a, x):
	c = 0
	for i in range(len(a)):
		if a[i] % 2 == 1:
			c += 1
	w = c
	if c == 0:
		return 'No'
	if c == len(a) and x % 2 == 0:
		return 'No'
	if c % 2 == 1:
		return 'Yes'
	elif c % 2 == 0 and x < len(a):
		return 'Yes'
	else:
		return 'No'
t = int(input())
while t > 0:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print(f(a, x))
	t -= 1


def odd(a):
	if a % 2 == 0:
		return a - 1
	return a

def test(n, x, nesh):
	sh = n - nesh
	if nesh == 0:
		return False
	if nesh < x:
		miin = odd(nesh)
	else:
		miin = odd(x)
	if miin + sh < x:
		return False
	return True
t = int(input())
for m in range(t):
	(n, x) = map(int, input().split())
	a = [int(x) for x in input().split()]
	sh = 0
	nesh = 0
	for q in range(n):
		if a[q] % 2 == 1:
			nesh = nesh + 1
		else:
			sh = sh + 1
	if test(n, x, nesh):
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	ped = 0
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	a = list(map(lambda p: int(p) % 2, input().split()))
	zam = a.count(0)
	oam = a.count(1)
	if oam > 0:
		x -= 1
		oam -= 1
		while x > 0:
			if oam > 1 and x > 1:
				x -= 2
				oam -= 2
			elif zam > 0:
				zam -= 1
				x -= 1
			else:
				print('no')
				ped = 1
				break
		if ped == 0:
			print('yes')
	else:
		print('no')
		ped = 1


t = int(input())
while t:
	t = t - 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	flag = 1
	oc = 0
	ec = 0
	for i in a:
		if i % 2 == 0:
			ec += 1
		else:
			oc += 1
	if oc > 0:
		if oc % 2 == 0:
			oc -= 1
		if x % 2:
			x -= min(x, oc)
			if ec < x:
				flag = 0
		else:
			x -= min(x - 1, oc)
			if ec < x:
				flag = 0
	else:
		flag = 0
	if flag == 1:
		print('Yes')
	else:
		print('No')


import sys
import math
import os
import itertools
import string
import heapq
import _collections
from collections import Counter
from collections import defaultdict
from functools import lru_cache
import bisect
import re
import queue
from decimal import *

class Scanner:

	@staticmethod
	def int():
		return int(sys.stdin.readline().rstrip())

	@staticmethod
	def string():
		return sys.stdin.readline().rstrip()

	@staticmethod
	def map_int():
		return [int(x) for x in Scanner.string().split()]

	@staticmethod
	def string_list(n):
		return [Scanner.string() for i in range(n)]

	@staticmethod
	def int_list_list(n):
		return [Scanner.map_int() for i in range(n)]

	@staticmethod
	def int_cols_list(n):
		return [Scanner.int() for i in range(n)]

class Math:

	@staticmethod
	def gcd(a, b):
		if b == 0:
			return a
		return Math.gcd(b, a % b)

	@staticmethod
	def lcm(a, b):
		return a * b // Math.gcd(a, b)

	@staticmethod
	def divisor(n):
		res = []
		i = 1
		for i in range(1, int(n ** 0.5) + 1):
			if n % i == 0:
				res.append(i)
				if i != n // i:
					res.append(n // i)
		return res

	@staticmethod
	def round_up(a, b):
		return -(-a // b)

	@staticmethod
	def is_prime(n):
		if n < 2:
			return False
		if n == 2:
			return True
		if n % 2 == 0:
			return False
		d = int(n ** 0.5) + 1
		for i in range(3, d + 1, 2):
			if n % i == 0:
				return False
		return True

	@staticmethod
	def fact(N):
		res = {}
		tmp = N
		for i in range(2, int(N ** 0.5 + 1) + 1):
			cnt = 0
			while tmp % i == 0:
				cnt += 1
				tmp //= i
			if cnt > 0:
				res[i] = cnt
		if tmp != 1:
			res[tmp] = 1
		if res == {}:
			res[N] = 1
		return res

def pop_count(x):
	x = x - (x >> 1 & 6148914691236517205)
	x = (x & 3689348814741910323) + (x >> 2 & 3689348814741910323)
	x = x + (x >> 4) & 1085102592571150095
	x = x + (x >> 8)
	x = x + (x >> 16)
	x = x + (x >> 32)
	return x & 127
MOD = int(1000000000.0) + 7
INF = int(1000000000000000.0)

def solve():
	(N, X) = Scanner.map_int()
	A = Scanner.map_int()
	isOdd = [a % 2 for a in A]
	no = sum(isOdd)
	ne = N - no
	if no == 0:
		return False
	no -= 1
	X -= 1
	t = no // 2
	t = t * 2
	X -= t
	if X == 0:
		return True
	if X < 0:
		X = X % 2
	X -= ne
	if X > 0:
		return False
	return True

def main():
	T = Scanner.int()
	for _ in range(T):
		print('YNeos'[not solve()::2])
main()


def odd(n, x, a):
	c = 0
	for i in a:
		if i % 2 == 1:
			c += 1
	if c == 0:
		return 'No'
	elif x % 2 == 0 and c == n:
		return 'No'
	elif x == n and c % 2 == 0:
		return 'No'
	else:
		return 'Yes'
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(s) for s in input().split()]
	print(odd(n, x, a))


import sys
from os import path
if path.exists('C:/Users/prana/Desktop/sublime/input.txt'):
	sys.stdin = open('C:/Users/prana/Desktop/sublime/input.txt', 'r')
	sys.stdout = open('C:/Users/prana/Desktop/sublime/output.txt', 'w')

def solve():
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	a = list(map(int, input().split()))
	odd = 0
	eve = 0
	for i in a:
		if i % 2 == 0:
			eve += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
	elif eve == 0:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif x % 2 != 0:
		if odd % 2 != 0:
			print('YES')
		elif eve - 1 + odd >= x:
			print('YES')
		else:
			print('NO')
	elif x == n:
		if odd % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif odd + eve >= x:
		print('YES')
	else:
		print('NO')
T = 1
T = int(input())
for _ in range(1, T + 1):
	print('Case #', _, file=sys.stderr)
	solve()


tc = int(input())
for _ in range(tc):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd_count = 0
	even_count = 0
	for i in arr:
		if i % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	res = 'Yes'
	if x == n:
		if odd_count % 2 == 1:
			res = 'Yes'
		else:
			res = 'No'
	elif odd_count == 0:
		res = 'No'
	elif even_count >= x - 1:
		res = 'Yes'
	elif x % 2 == 0:
		if even_count == 0:
			res = 'No'
	else:
		res = 'Yes'
	print(res)


def separate(A):
	odd = []
	even = []
	for x in A:
		if x % 2 == 0:
			even.append(x)
		else:
			odd.append(x)
	return (odd, even)
for _ in range(int(input())):
	nx = [int(x) for x in input().split(' ')]
	n = nx[0]
	x = nx[1]
	A = [int(x) for x in input().split(' ')]
	(odd, even) = separate(A)
	l_o = len(odd)
	l_e = len(even)
	if l_o == 0:
		print('No')
	elif l_e == 0 and x % 2 == 0:
		print('No')
	elif l_o <= x:
		if l_o % 2 == 0 and l_e >= x - (l_o - 1):
			print('Yes')
		elif l_o % 2 == 0 and l_e < x - (l_o - 1):
			print('No')
		else:
			print('Yes')
	elif x % 2 != 0:
		print('Yes')
	elif l_e >= 1:
		print('Yes')
	else:
		print('No')


from sys import stdin
for _ in range(int(stdin.readline())):
	(n, x) = map(int, stdin.readline().split())
	even = 0
	odd = 0
	for i in map(int, stdin.readline().split()):
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0 or (odd + even == x and odd % 2 == 0) or (even == 0 and x % 2 == 0):
		print('NO')
	else:
		print('YES')


num_test_cases = int(input())
for i in range(num_test_cases):
	(n, x) = map(int, input().split())
	int_array = list(map(int, input().split()))
	even = 0
	odd = 0
	for number in int_array:
		if number % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif even == 0 and x % 2 == 1:
		print('Yes')
	elif even == 0 and x % 2 == 0:
		print('No')
	elif x == n and odd % 2 == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	ans = 1
	even = odd = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	left = x - even
	if odd == 0:
		ans = 0
	elif odd == 1:
		ans = 1
	else:
		if odd % 2 == 0:
			if x % 2 == 0:
				left = min(x - 1, odd - 1)
			else:
				left = min(x, odd - 1)
		elif x % 2 == 0:
			left = min(x - 1, odd)
		else:
			left = min(x, odd)
		if left + even >= x:
			ans = 1
		else:
			ans = 0
	if ans == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = [int(i) for i in input().split()]
	a = [int(i) % 2 for i in input().split()]
	a.sort(reverse=True)
	if sum(a[:x]) % 2 == 1:
		print('YES')
	elif a[0] == 1 and a[n - 1] == 0 and (x < n):
		print('YES')
	else:
		print('NO')


import getopt
import sys
import math
onlyCase = -1
verbose = False
try:
	(opts, args) = getopt.getopt(sys.argv[1:], 'vc:', ['case='])
except getopt.GetoptError as err:
	print(str(err))
	sys.exit(2)
for (o, a) in opts:
	if o in ('-c', '--case'):
		onlyCase = int(a)
	elif o == '-v':
		verbose = True
	else:
		sys.exit()
ncases = int(input())
for c in range(1, ncases + 1):
	(_, x) = [int(x) for x in input().split()]
	A = [int(x) for x in input().split()]
	if onlyCase != -1 and onlyCase != c:
		continue
	even = 0
	odd = 0
	for a in A:
		if a % 2 == 0:
			even += 1
		else:
			odd += 1
	if verbose:
		print(A)
		print('odd %d even %d x=%d' % (odd, even, x))
	if odd > 0 and (odd - 1) // 2 * 2 + even >= x - 1 and (even > 0 or x % 2):
		print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().strip().split(' '))
	arr = list(map(int, input().strip().split(' ')))
	od = ev = 0
	for i in arr:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
	elif ev == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif od % 2 == 0:
		if od - 1 + ev >= x:
			print('Yes')
		else:
			print('No')
	elif od + ev >= x:
		print('Yes')
	else:
		print('No')


from sys import stdin, setrecursionlimit, stdout
from collections import deque
from math import sqrt, floor, ceil, log, log2, log10, pi, gcd, sin, cos, asin

def ii():
	return int(stdin.readline())

def fi():
	return float(stdin.readline())

def mi():
	return map(int, stdin.readline().split())

def fmi():
	return map(float, stdin.readline().split())

def li():
	return list(mi())

def si():
	return stdin.readline().rstrip()

def lsi():
	return list(si())
res = ['YES', 'NO']
test_case = ii()
while test_case:
	test_case -= 1
	(n, k) = mi()
	a = li()
	odd = even = 0
	for i in a:
		if i % 2:
			odd += 1
		else:
			even += 1
	f = 0
	if not odd:
		f = 1
	elif n == k and (not odd % 2):
		f = 1
	elif not k % 2 and (not even):
		f = 1
	print(res[f])


def solve():
	[n, x] = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	if n == x:
		if sum(arr) % 2 != 0:
			print('YES')
		else:
			print('NO')
		return
	even = 0
	odd = 0
	for val in arr:
		if val % 2 != 0:
			odd += 1
		else:
			even += 1
	flag = False
	for i in range(1, x + 1, 2):
		if odd >= i and even >= x - i:
			print('YES')
			return
	print('NO')

def main():
	n = int(input())
	while n > 0:
		solve()
		n -= 1
main()


from sys import stdin, stdout
import sys
from math import *
for __ in range(int(input())):
	(n, x) = map(int, input().split())
	ar = list(map(int, input().split()))
	e = 0
	o = 0
	for i in range(n):
		if ar[i] % 2 == 1:
			o += 1
		else:
			e += 1
	if o % 2 == 1 and (e > 0 or x % 2 == 1):
		print('Yes')
	elif e == 0 and x % 2 == 0:
		print('No')
	elif o > 0 and x < n:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	x = [int(n) & 1 for n in input().split()]
	a = x.count(0)
	b = x.count(1)
	if k == n:
		if b & 1:
			print('Yes')
		else:
			print('No')
	elif b == 0 or (k % 2 == 0 and a == 0):
		print('No')
	else:
		print('Yes')


for test in range(int(input())):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if k == n:
		print('Yes' if odd % 2 == 1 else 'No')
	elif odd == 0:
		print('No')
	elif k % 2 == 0:
		flag = False
		for i in range(1, k, 2):
			v1 = i
			v2 = k - i
			if v1 <= odd and v2 <= even:
				flag = True
				break
		print('Yes' if flag else 'No')
	else:
		flag = False
		for i in range(1, k + 1, 2):
			v1 = i
			v2 = k - i
			if v1 <= odd and v2 <= even:
				flag = True
				break
		print('Yes' if flag else 'No')


for t in range(int(input())):
	(n, x) = [int(j) for j in input().split()]
	a = [int(j) for j in input().split()]
	o = 0
	e = 0
	for i in range(n):
		if a[i] % 2 == 0:
			e += 1
		else:
			o += 1
	for i in range(1, x + 1, 2):
		if e >= x - i and o >= i:
			print('Yes')
			break
	else:
		print('No')


import sys
import math
fileoperation = 0
if fileoperation:
	orig_stdout = sys.stdout
	orig_stdin = sys.stdin
	inputfile = open('W:/Competitive Programming/input.txt', 'r')
	outputfile = open('W:/Competitive Programming/output.txt', 'w')
	sys.stdin = inputfile
	sys.stdout = outputfile
mod = 1000000007

def nospace(l):
	ans = ''.join((str(i) for i in l))
	return ans
t = int(input())
for tt in range(t):
	(n, x) = map(int, sys.stdin.readline().split(' '))
	a = list(map(int, sys.stdin.readline().split(' ')))
	o = 0
	for v in a:
		if v % 2 == 1:
			o += 1
	e = n - o
	f = 0
	for p in range(1, o + 1, 2):
		r = x - p
		if r <= e and r >= 0:
			f = 1
			break
	if f == 1:
		print('Yes')
	else:
		print('No')
if fileoperation:
	sys.stdout = orig_stdout
	sys.stdin = orig_stdin
	inputfile.close()
	outputfile.close()


n = int(input())
for i in range(0, n):
	y = list(map(int, input().split()))
	x = list(map(int, input().split()))
	a = 0
	b = 0
	for j in range(0, y[0]):
		x[j] = x[j] % 2
		if x[j] == 1:
			a += 1
		else:
			b += 1
	if a == 0:
		print('No')
	else:
		if a % 2 == 0:
			a = a - 1
		if y[1] % 2 == 0:
			y[1] = y[1] - 1
			if b != 0:
				b = b - 1
			else:
				print('No')
				continue
		if y[1] - a <= b:
			print('Yes')
		else:
			print('No')


import sys
sys.setrecursionlimit(10 ** 5)
t = int(input())

def chk(o, e):
	global k, ev, ov
	if o > ov or e > ev:
		return False
	if o + e >= k:
		if o % 2 == 1:
			return True
		else:
			return False
	return chk(o + 1, e) or chk(o, e + 1)

def getodds(arr):
	o = 0
	for i in arr:
		if i % 2 == 1:
			o += 1
	return [o, len(arr) - o]
while t > 0:
	t -= 1
	(n, k) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	(ov, ev) = getodds(arr)
	if chk(0, 0):
		print('Yes')
	else:
		print('No')


from sys import stdin

def solve():
	(n, x) = map(int, stdin.readline().split())
	a = list(map(int, stdin.readline().split()))
	nc = [i for i in a if i % 2 == 1]
	if not nc or (len(nc) % 2 == 0 and x == n) or (len(nc) == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')
tt = int(stdin.readline())
for _ in range(tt):
	solve()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	li = [int(i) for i in input().split()]
	cnt1 = 0
	cnt2 = 0
	for i in li:
		if i % 2 == 1:
			cnt1 += 1
		else:
			cnt2 += 1
	if n == x:
		if cnt1 % 2 == 1:
			print('YES')
		else:
			print('NO')
	elif cnt2 == 0 and x % 2 == 0 or cnt1 == 0:
		print('NO')
	else:
		print('YES')


import sys
num_tests = int(sys.stdin.readline())
for _ in range(num_tests):
	(n, x) = map(int, sys.stdin.readline().split())
	data_set = list(map(int, sys.stdin.readline().split()))
	count_odds = sum((1 for number in data_set[:n] if number % 2 == 1))
	if count_odds == 0 or x - 1 - 2 * min((x - 1) // 2, (count_odds - 1) // 2) > n - count_odds:
		print('No')
	else:
		print('Yes')


T = int(input())
for _ in range(T):
	(n, k) = input().split()
	n = int(n)
	k = int(k)
	a = input().split()
	no = 0
	ne = 0
	for i in range(n):
		a[i] = int(a[i])
		if a[i] % 2 == 0:
			ne += 1
		else:
			no += 1
	if no == 0 or (k == n and no % 2 == 0) or (ne == 0 and k % 2 == 0):
		print('No')
	else:
		print('Yes')


import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, functools

def solve(line):
	(n, x) = map(int, line.split())
	a = [int(x) for x in sys.stdin.readline().rstrip().split()]
	na = sum([x % 2 == 1 for x in a])
	for i in range(1, min(x + 1, na + 1), 2):
		if x - i <= n - na:
			return 'Yes'
	return 'No'
T = int(sys.stdin.readline())
t = 0
while True:
	line = sys.stdin.readline().rstrip()
	if not line:
		break
	print(solve(line))
	t += 1


for i in range(int(input())):
	a = list(map(int, input().strip().split()))[:2]
	b = list(map(int, input().strip().split()))[:a[0]]
	count1 = 0
	count2 = 0
	for k in b:
		if k % 2 == 0:
			count2 += 1
		else:
			count1 += 1
	if count1 % 2 == 0:
		count1 -= 1
	if count2 == 0 and a[1] % 2 == 0 or count1 == -1:
		print('No')
	elif count2 + count1 >= a[1]:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	temp = 0
	arr = list(map(int, input().split()))
	(oddcnt, evencnt) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			evencnt += 1
	oddcnt = len(arr) - evencnt
	if oddcnt == 0:
		print('NO')
		continue
	temp = oddcnt - 1 + evencnt if x % 2 == 0 else oddcnt + evencnt
	if x % 2 != 0:
		temp = oddcnt + evencnt if oddcnt % 2 != 0 else oddcnt - 1 + evencnt
	elif evencnt == 0:
		print('NO')
		continue
	else:
		temp = oddcnt + evencnt if oddcnt % 2 != 0 else oddcnt - 1 + evencnt
	print('YES') if temp >= x else print('NO')


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	od = ev = 0
	arr = list(map(int, input().split()))
	for i in arr:
		if i & 1 == 1:
			od += 1
		else:
			ev += 1
	if x & 1 == 1:
		if od == 0:
			print('NO')
		elif od >= x:
			print('YES')
		else:
			if od & 1 == 0:
				od -= 1
			if ev >= x - od:
				print('YES')
			else:
				print('NO')
	elif x & 1 == 0:
		if ev == 0 or od == 0:
			print('NO')
		else:
			x = x - 1
			ev = ev - 1
			if od >= x:
				print('YES')
			else:
				if od & 1 == 0:
					od -= 1
				if ev >= x - od:
					print('YES')
				else:
					print('NO')


t = input()
pri = []
for k in range(int(t)):
	F = [0, 0]
	flag = False
	pri.append('')
	inp = input()
	inp = inp.split()
	n = inp[0]
	x = inp[1]
	A = []
	inp = input()
	inp = inp.split()
	for i in range(int(n)):
		A.append(int(inp[i]))
		F[int(inp[i]) % 2] += 1
	i = 1
	while i <= int(F[1]) and i <= int(x):
		if int(F[0]) >= int(x) - int(i):
			flag = True
			pri[k] = 'Yes'
		i += 2
	if flag == False:
		pri[k] = 'No'
for i in range(int(len(pri))):
	print(pri[i])


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if x > n:
		print('No')
		contiue
	co = 0
	ce = 0
	for i in a:
		if i % 2 == 0:
			ce += 1
		else:
			co += 1
	if co == 0:
		print('No')
		continue
	if ce == 0:
		if x % 2 == 0:
			print('No')
			continue
		if x > co:
			print('No')
			continue
		print('Yes')
		continue
	k = x - ce
	if k % 2 == 0:
		k += 1
	if k <= co:
		print('Yes')
	else:
		print('No')


t = int(input())
while t > 0:
	info = list(map(int, input().split(' ')))
	array = list(map(int, input().split(' ')))
	odd = 0
	even = 0
	for ele in array:
		if ele % 2 == 0:
			even += 1
		else:
			odd += 1
	if info[1] % 2 == 1:
		if info[1] <= odd:
			print('Yes')
		elif odd % 2 == 1:
			print('Yes')
		elif odd == 0:
			print('No')
		elif info[1] - (odd - 1) <= even:
			print('Yes')
		else:
			print('No')
	elif even == 0:
		print('No')
	elif info[1] <= odd:
		print('Yes')
	elif odd % 2 == 1:
		print('Yes')
	elif odd == 0:
		print('No')
	elif info[1] - (odd - 1) <= even:
		print('Yes')
	else:
		print('No')
	t -= 1


k = int(input())
for _ in range(k):
	(n, x) = map(int, input().split())
	m = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in m:
		if i % 2:
			odd += 1
		else:
			even += 1
	if not odd:
		print('No')
	elif not even and x % 2:
		print('Yes')
	elif odd % 2 == 1 and even:
		print('Yes')
	elif x != n and even and (odd % 2 == 0):
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	ec = 0
	oc = 0
	for i in l:
		if i & 1 == 1:
			oc += 1
		else:
			ec += 1
	if n < x or oc == 0:
		print('NO')
		continue
	if ec + oc == x:
		if (x - ec) % 2 == 0:
			print('NO')
		else:
			print('YES')
		continue
	if x % 2 == 0:
		if ec == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('YES')


for u in range(int(input())):
	(a, x) = map(int, input().split())
	b = [int(w) for w in input().split()]
	c = 0
	for i in range(len(b)):
		if b[i] % 2 == 1:
			c += 1
	if c == 0 or (c % 2 == 0 and x == a) or (x % 2 == 0 and c == a):
		print('NO')
	else:
		print('YES')


import math as mt
import sys, string
input = sys.stdin.readline
from collections import defaultdict
L = lambda : list(map(int, input().split()))
Ls = lambda : list(input().split())
M = lambda : map(int, input().split())
I = lambda : int(input())

def solve():
	(n, x) = M()
	l = L()
	d = 0
	e = 0
	sum = 0
	for i in l:
		sum += i
		if i % 2:
			d += 1
		else:
			e += 1
	if x == n:
		if sum % 2 == 0:
			print('No')
			return
		if sum % 2 == 1:
			print('Yes')
			return
	if x % 2 == 0:
		if d >= 1 and e >= 1:
			print('Yes')
			return
		else:
			print('No')
			return
	elif d >= 1:
		print('Yes')
		return
	else:
		print('No')
		return
t = I()
for _ in range(t):
	solve()


v = int(input())
for i in range(v):
	(a, b) = list(map(int, input().split()))
	c = list(map(int, input().split()))
	odd = len([i for i in c if i % 2 != 0])
	even = len(c) - odd
	yes = False
	for i in range(odd + 1):
		if i % 2 == 1 and i <= b and (b - i <= even):
			yes = True
	if yes:
		print('Yes')
	else:
		print('No')


def solution(arr, k):
	n = [0, 0]
	for i in arr:
		val = i % 2
		n[val] = n[val] + 1
	for i in range(1, n[1] + 1, 2):
		j = k - i
		if j >= 0 and j <= n[0]:
			return True
	return False
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	arr = [int(x) for x in input().split()]
	cond = solution(arr, k)
	if cond:
		print('YES')
	else:
		print('NO')


t = int(input())
while t:
	(n, x) = [int(k) for k in input().split()]
	(even, odd) = (0, 0)
	for ele in input().split():
		if int(ele) % 2 == 0:
			even += 1
		else:
			odd += 1
	if x <= even and odd >= 1:
		print('Yes')
	elif x > even and (x - even) % 2 != 0:
		print('Yes')
	elif x > even and odd > x - even and (even >= 1):
		print('Yes')
	else:
		print('No')
	t -= 1


from sys import stdin
input = stdin.readline

def list_input():
	return list(map(int, input().split()))

def sep_input():
	return map(int, input().split())
for _ in range(int(input())):
	(n, x) = sep_input()
	l = list_input()
	if x == n:
		if sum(l) % 2 == 1:
			print('YES')
		else:
			print('NO')
		continue
	o = []
	e = []
	for i in range(n):
		if l[i] % 2 == 1:
			o.append(l[i])
		else:
			e.append(l[i])
	if len(o) == 0:
		print('NO')
	elif len(o) == n:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		k = x
		s = 0
		for i in range(len(o)):
			if k == 0 or (s % 2 == 1 and len(e) >= k and (k > 0)):
				break
			else:
				k -= 1
				s += o[i]
		if k == 0 and s % 2 == 1:
			print('YES')
		elif k == 0 and s % 2 == 0:
			print('NO')
		elif s % 2 == 1 and len(e) >= k and (k > 0):
			print('YES')
		else:
			for i in range(len(e)):
				if k == 0:
					break
				else:
					k -= 1
					s += e[i]
			if s % 2 == 1:
				print('YES')
			else:
				print('NO')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	arr = [int(i) for i in input().split()]
	flag = 0
	flag1 = 0
	for i in range(n):
		if arr[i] % 2 != 0:
			flag += 1
		if arr[i] % 2 == 0:
			flag1 += 1
	i = 1
	ans = 0
	while True:
		if i <= flag and x - i <= flag1:
			print('Yes')
			ans = 1
			break
		i += 2
		if i > x:
			break
	if ans == 0:
		print('No')


def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for num in a:
		if num % 2 == 0:
			even += 1
		else:
			odd += 1
	for i in range(1, odd + 1, 2):
		if i <= x and x - i <= even:
			print('Yes')
			return
	print('No')
for _ in range(int(input())):
	solve()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	evens = 0
	odds = 0
	for i in arr:
		if i % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds == 0:
		print('No')
	elif evens == 0:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		done = False
		for i in range(evens + 1):
			if x - i <= odds and (x - i) % 2 == 1:
				done = True
				print('Yes')
				break
		if not done:
			print('No')


N = int(input())
for _ in range(N):
	(x, n) = input().split(' ')
	x = input().split(' ')
	x = [int(i) for i in x]
	n = int(n)
	chet = len([i for i in x if i % 2 == 0])
	nechet = len(x) - chet
	for i in range(1, n + 1, 2):
		if i <= nechet and n - i <= chet:
			print('Yes')
			break
	else:
		print('No')


t = int(input())
for ii in range(t):
	(n, k) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for i in a:
		if i % 2 != 0:
			odd += 1
		else:
			even += 1
	if odd + even < k:
		print('No')
		break
	if odd < 1:
		print('No')
	else:
		odd = odd - 1
		k = k - 1
		odd = odd // 2
		if k >= odd * 2:
			k = k - odd * 2
		elif k % 2 == 0:
			k = 0
		else:
			k = 1
		if k == 0:
			print('Yes')
		elif even >= k:
			print('Yes')
		else:
			print('No')


n = int(input())
for _ in range(n):
	(_, choose) = map(int, input().split())
	li = list(map(int, input().split()))
	odd = even = 0
	for n in li:
		if n % 2 == 0:
			even += 1
		else:
			odd += 1
	if even == 0 and choose % 2 == 0:
		print('NO')
	elif even + odd == choose and odd % 2 == 0:
		print('NO')
	elif odd == 0:
		print('NO')
	else:
		print('YES')


for _ in range(int(input())):
	(N, X) = map(int, input().split())
	A = list(map(int, input().split()))
	(E, D, f) = ([], [], 0)
	for i in A:
		if i & 1 == 1:
			D.append(i)
		else:
			E.append(i)
	Q = len(D)
	LE = N - Q
	if Q == 0:
		print('No')
	elif X == N:
		if sum(A) & 1 == 1:
			print('Yes')
		else:
			print('No')
	elif X & 1 == 1:
		print('Yes')
	elif X & 1 == 0 and LE == 0:
		print('No')
	elif X & 1 == 0 and Q >= 1:
		print('Yes')


from bisect import bisect_left as bl
from bisect import bisect_right as br
from heapq import heappush, heappop
import math
from collections import *
from functools import reduce, cmp_to_key, lru_cache
import io, os
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
M = mod = 10 ** 9 + 7

def factors(n):
	return sorted(set(reduce(list.__add__, ([i, n // i] for i in range(1, int(n ** 0.5) + 1) if n % i == 0))))

def inv_mod(n):
	return pow(n, mod - 2, mod)

def li():
	return [int(i) for i in input().rstrip().split()]

def st():
	return str(input().rstrip())[2:-1]

def val():
	return int(input().rstrip())

def li2():
	return [str(i)[2:-1] for i in input().rstrip().split()]

def li3():
	return [int(i) for i in st()]
for _ in range(val()):
	(n, x) = li()
	l = sorted([i & 1 for i in li()])
	ones = l.count(1)
	zeros = n - ones
	ans = 'NO'
	for i in range(n - x + 1):
		if sum(l[i:i + x]) & 1:
			ans = 'YES'
			break
	print(ans)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	(*arr,) = map(int, input().split())
	oc = 0
	ec = 0
	for i in arr:
		if i % 2 == 0:
			ec += 1
		else:
			oc += 1
	if oc + ec >= x:
		x = x - min(ec, x)
		if x % 2 == 0 and ec > 0:
			x += 1
			if oc >= x:
				print('Yes')
			else:
				print('No')
		elif x % 2 == 0 and ec == 0:
			print('No')
		elif oc >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	l = [int(l) for l in input().split()]
	even = odd = fl = 0
	for j in l:
		if j % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		fl = 0
	elif even == 0:
		if x % 2 != 0:
			fl = 1
	else:
		for j in range(1, odd + 1, 2):
			if j + even >= x:
				fl = 1
				break
	if fl == 0:
		print('NO')
	else:
		print('YES')


t = int(input())
for j in range(t):
	a = []
	a = list(map(int, input().split()))
	n = a[0]
	k = a[1]
	a = []
	a = list(map(int, input().split()))
	ch = 0
	ne = 0
	for i in range(n):
		if a[i] % 2 == 0:
			ch += 1
		else:
			ne += 1
	if ne % 2 == 0:
		ne -= 1
	save = k
	if ne > 0:
		k = k - ne
		if ch == 0 and save % 2 == 0:
			print('NO')
		elif k <= ch:
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


for loop in range(int(input())):
	(n, x) = map(int, input().split())
	(*a,) = map(int, input().split())
	odd = 0
	for A in a:
		if A % 2 != 0:
			odd += 1
	even = n - odd
	found = False
	for i in range(min(x, odd) + 1):
		j = x - i
		if i % 2 == 1 and j <= even:
			found = True
	print('Yes' if found else 'No')


def solve(n, x, a):
	if all((i % 2 == 0 for i in a)):
		return False
	if all((i % 2 == 1 for i in a)):
		return x % 2 == 1
	if n == x:
		return sum(a) % 2 == 1
	return True
t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	nums = list(map(int, input().split()))
	print('Yes' if solve(n, x, nums) else 'No')


import sys
from functools import lru_cache, cmp_to_key
from heapq import merge, heapify, heappop, heappush
from math import ceil, floor, gcd, fabs, factorial, fmod, sqrt, inf, log, pi, sin
from collections import defaultdict as dd, deque, Counter as C
from itertools import combinations as comb, permutations as perm
from bisect import bisect_left as bl, bisect_right as br, bisect
from time import perf_counter
from fractions import Fraction
mod = pow(10, 9) + 7
mod2 = 998244353

def data():
	return sys.stdin.readline().strip()

def out(*var, end='\n'):
	sys.stdout.write(' '.join(map(str, var)) + end)

def l():
	return list(sp())

def sl():
	return list(ssp())

def sp():
	return map(int, data().split())

def ssp():
	return map(str, data().split())

def l1d(n, val=0):
	return [val for i in range(n)]

def l2d(n, m, val=0):
	return [l1d(n, val) for j in range(m)]
for _ in range(int(data())):
	(n, x) = sp()
	arr = l()
	(odd, even) = (0, 0)
	for i in range(n):
		if arr[i] & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		out('No')
		continue
	if odd == n and (not x & 1):
		out('No')
		continue
	if not odd & 1:
		odd = 1
		even = n - 2
	else:
		odd = 1
		even = n - 1
	if odd + even >= x:
		out('Yes')
		continue
	out('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ct = []
	ct2 = []
	for i in range(n):
		if a[i] % 2 == 1:
			ct.append(a[i])
		else:
			ct2.append(a[i])
	if len(ct) == 0:
		print('No')
	elif x % 2 == 0:
		if len(ct2) == 0:
			print('No')
		elif len(ct) - (1 - len(ct) % 2) + len(ct2) >= x:
			print('Yes')
		else:
			print('No')
	elif len(ct) - (1 - len(ct) % 2) + len(ct2) >= x:
		print('Yes')
	else:
		print('No')


from itertools import combinations
t = int(input())
for _ in range(t):
	flag = 0
	(n, x) = map(int, input().strip().split())
	arr = list(map(int, input().strip().split()))
	odd = 0
	even = 0
	for i in arr:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if even + odd < x:
		print('NO')
	elif x > even:
		if x % 2 == 0:
			if even > 0:
				if even % 2 == 1:
					x = x - even
				else:
					x = x - even + 1
		elif even > 0:
			if even % 2 == 0:
				x = x - even
			else:
				x = x - even + 1
		if x % 2 == 1 and x <= odd:
			print('YES')
		else:
			print('NO')
	elif odd > 0:
		print('YES')
	else:
		print('NO')


tc = int(input())
for _ in range(tc):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	if x > n:
		print('No')
	elif x == n:
		if sum(arr) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		(evens, odds) = (0, 0)
		for i in arr:
			if i % 2 == 0:
				evens += 1
			else:
				odds += 1
		if odds == 0:
			print('No')
		elif evens >= 1 and odds >= 1:
			print('Yes')
		elif evens == 0:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')


T = int(input())
for _ in range(T):
	(n, x) = map(int, input().split())
	li = list(map(int, input().split()))
	(countOdd, countEven) = (0, 0)
	for i in li:
		if i % 2 == 1:
			countOdd += 1
		else:
			countEven += 1
	if x > n:
		print('No')
	elif x % 2 == 0:
		if countOdd % 2 == 1 and countEven >= 1:
			print('Yes')
		elif countOdd != 0 and countEven >= 1 and (countOdd + countEven - 1 >= x):
			print('Yes')
		else:
			print('No')
	elif countOdd % 2 == 1:
		print('Yes')
	elif countOdd != 0 and countOdd + countEven - 1 >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
new_arr = []
for i in range(t):
	(a, b) = map(int, input().split())
	arr = input().split()
	odd = 0
	for j in arr:
		if int(j) % 2 == 1:
			odd += 1
	if odd % 2 == 1 and b % 2 == 1:
		new_arr.append('Yes')
	elif odd % 2 == 0 and a - odd > 0 and (b < a) and (odd > 0):
		new_arr.append('Yes')
	elif odd % 2 == 0 and b % 2 == 1 and (b < a) and (odd > 0):
		new_arr.append('Yes')
	elif odd % 2 == 1 and a > odd:
		new_arr.append('Yes')
	else:
		new_arr.append('No')
for i in new_arr:
	print(i)


def main():
	from io import BytesIO
	from os import read, fstat
	input = BytesIO(read(0, fstat(0).st_size)).readline
	from sys import stdout
	print = stdout.write
	t = int(input())
	for _ in range(t):
		flag = False
		(n, x) = list(map(int, input().split()))
		a = list(map(int, input().split()))
		(good, bad) = (0, 0)
		for el in a:
			if el % 2 == 0:
				good += 1
			else:
				bad += 1
		for i in range(1, x + 1, 2):
			if i <= bad and x - i <= good:
				flag = True
				break
		if flag:
			print('Yes\n')
		else:
			print('No\n')
main()


t = int(input())
while t > 0:
	(n, x) = map(int, input().split())
	_list = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for num in _list:
		if num % 2:
			odd += 1
		else:
			even += 1
	if odd == 0 or (n == x and odd % 2 == 0) or (x % 2 == 0 and even == 0):
		print('No')
	else:
		print('Yes')
	t -= 1


import sys
from collections import defaultdict as dd
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())

def odd(i, j, x):
	if x == 0:
		return False
	if x == 1:
		return i >= 1
	else:
		return i - 1 >= 0 and even(i - 1, j, x - 1)

def even(i, j, x):
	if x == 0:
		return False
	if x == 1:
		return j >= 1
	else:
		return i - 1 >= 0 and odd(i - 1, j, x - 1) or (j - 1 >= 0 and even(i, j - 1, x - 1))
for i in range(inp()):
	arr = inlt()
	(num_items, x) = (arr[0], arr[1])
	nums = inlt()
	counter = dd(int)
	for num in nums:
		if num % 2 == 0:
			counter['even'] += 1
		else:
			counter['odd'] += 1
	res = odd(counter['odd'], counter['even'], x)
	if res:
		print('Yes')
	else:
		print('No')


test = int(input())
for _ in range(test):
	(n, k) = map(int, input().split())
	odd = sum((v % 2 for v in map(int, input().split())))
	even = n - odd
	for todd in range(1, min(k, odd) + 1, 2):
		if even >= k - todd:
			print('YES')
			break
	else:
		print('NO')


t = int(input())
for _ in range(t):
	(x, n) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = []
	even = []
	for i in arr:
		if i % 2 == 0:
			even.append(i)
		else:
			odd.append(i)
	len_odd = len(odd)
	len_even = len(even)
	if n == x:
		if len_odd % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif len_odd == 0:
		print('NO')
	else:
		rem = n - 1
		len_odd -= 1
		if rem >= len_odd / 2 * 2:
			rem = rem - len_odd / 2 * 2
			if rem <= len_even:
				print('YES')
			else:
				print('NO')
		elif rem % 2 == 0:
			print('YES')
		elif len_even == 0:
			print('NO')
		else:
			print('YES')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	c1 = 0
	c2 = 0
	for i in a:
		if i % 2 != 0:
			c1 += 1
		else:
			c2 += 1
	if c1 > 0:
		if x % 2 == 0:
			if c2 == 0:
				print('NO')
			elif c1 % 2 != 0 or c1 >= x or c2 >= x or (c1 + c2 > x):
				print('YES')
			elif (x - c2) % 2 != 0:
				print('YES')
			else:
				print('NO')
		elif c1 % 2 != 0:
			print('YES')
		elif c1 >= x or c2 >= x:
			print('YES')
		elif c1 + c2 > x:
			print('YES')
		elif (x - c2) % 2 == 0:
			print('NO')
		else:
			print('YES')
	else:
		print('NO')


import math
import os
import random
import re
import sys

def odd_selection(x, arr):
	odd_count = len(list(filter(lambda c: c & 1, arr)))
	even_count = len(arr) - odd_count
	if not odd_count:
		return False
	if not even_count and x & 1 ^ 1:
		return False
	if x == len(arr) and odd_count & 1 ^ 1:
		return False
	return True
t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().rstrip().split()))
	arr = list(map(int, input().rstrip().split()))
	result = odd_selection(x, arr)
	print('Yes' if result else 'No')


for xyz in range(0, int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	oc = 0
	ec = 0
	for i in l:
		if i % 2 == 0:
			ec += 1
		else:
			oc += 1
	if oc == 0:
		print('No')
	elif ec == 0 and x % 2 == 0:
		print('No')
	elif x == n:
		if sum(l) % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


import sys, math
Tests = int(input())
for _ in range(Tests):
	(n, k) = map(int, sys.stdin.readline().split())
	a = list(map(int, sys.stdin.readline().split()))
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	else:
		flag = False
		for i in range(1, k + 1, 2):
			if odd >= i and even >= k - i:
				flag = True
				break
		if flag:
			print('Yes')
		else:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	mas = [int(i) for i in input().split()]
	count_of_chet = 0
	count_of_nechet = 0
	for j in mas:
		if j % 2 == 0:
			count_of_chet += 1
		else:
			count_of_nechet += 1
	if count_of_nechet >= 1:
		count_of_nechet -= 1
		count = 1
		if count == x:
			print('Yes')
		else:
			while count < x:
				if count_of_nechet >= 2:
					count_of_nechet -= 2
					count += 2
					if count > x:
						if count_of_chet >= 1:
							print('Yes')
							break
						else:
							print('No')
							break
					if count == x:
						print('Yes')
						break
				elif count_of_chet > 0:
					count += 1
					count_of_chet -= 1
					if count == x:
						print('Yes')
						break
				else:
					print('No')
					break
	else:
		print('No')


from sys import stdin, stdout
for __ in range(int(stdin.readline())):
	(n, x) = map(int, stdin.readline().split())
	a = list(map(int, stdin.readline().split()))
	o = 0
	e = 0
	for i in range(n):
		if a[i] % 2 == 1:
			o += 1
		else:
			e += 1
	f = 0
	l = min(x, o)
	for i in range(1, l + 1, 2):
		h = x - i
		if h <= e:
			f = 1
	if f == 1:
		print('Yes')
	else:
		print('No')


class OddSelection:

	def odd_possible(self, a, x):
		(c_odd, c_even) = (0, 0)
		for i in range(len(a)):
			if a[i] % 2 == 0:
				c_even += 1
			else:
				c_odd += 1
		for i in range(1, min(x, c_odd) + 1, 2):
			if c_even >= x - i:
				return 'Yes'
		return 'No'
t = int(input())
od = OddSelection()
while t > 0:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	print(od.odd_possible(a, x))
	t -= 1


count = int(input())
for i in range(count):
	l1 = input().split(' ')
	(n, x) = (int(l1[0]), int(l1[1]))
	l2 = input().split(' ')
	numbers = [int(l) for l in l2]
	sum = 0
	for num in numbers:
		if num % 2 == 1:
			sum += 1
	if x < n and sum != 0 and (sum != n):
		print('Yes')
	elif sum == 0:
		print('No')
	elif x == n:
		if sum % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 1:
		print('Yes')
	else:
		print('No')


def main():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		s = list(map(int, input().split()))
		odd = 0
		for i in s:
			if i % 2 == 1:
				odd += 1
		if odd == 0:
			print('No')
		elif odd == n and x % 2 == 0:
			print('No')
		else:
			evs = n - odd + (odd - 1) // 2 * 2
			print('Yes' if evs >= x - 1 and odd > 0 else 'No')
main()


import sys
input = sys.stdin.readline

def multi_input():
	return map(int, input().split())

def array_print(arr):
	print(' '.join(map(str, arr)))
for t in range(int(input())):
	(a, b) = multi_input()
	l = list(multi_input())
	odd = even = 0
	for i in l:
		if i & 1 != 0:
			odd += 1
		else:
			even += 1
	flag = 0
	if odd > 0 and b > 0:
		temp = max(b - even, 0)
		if temp % 2 != 0:
			flag = 1
		elif odd > temp and even > 0:
			flag = 1
	if flag == 1:
		print('Yes')
	else:
		print('No')


from math import *
from sys import stdin, stdout
input = stdin.buffer.readline
t = int(input())
while t > 0:
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for i in range(n):
		if a[i] % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd <= 0:
		print('NO')
	elif even <= 0:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif n % 2 == 1:
		if odd % 2 == 1 and even % 2 == 0:
			print('YES')
		elif x == n:
			print('NO')
		else:
			print('YES')
	elif odd % 2 == 1 and even % 2 == 1:
		print('YES')
	elif x == n:
		print('NO')
	else:
		print('YES')
	t -= 1


t = int(input())
for i in range(t):
	(n, x) = [int(m) for m in input().split()]
	o = 0
	e = 0
	arr = [int(z) for z in input().split()]
	for j in range(n):
		if arr[j] % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif n == x and o % 2 == 0:
		print('No')
	elif o == n and x % 2 == 0:
		print('No')
	else:
		print('Yes')


test = int(input())
for i in range(test):
	(n, x) = map(int, input().split())
	nums = list(map(int, input().split()))
	nums = [j % 2 for j in nums]
	ones = nums.count(1)
	if x - ones > 0 and ones % 2 == 0 and (n == x or ones == 0) or (x - ones <= 0 and n - ones == 0 and (x % 2 == 0)):
		print('NO')
	else:
		print('YES')


def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if n == 1:
		return a[0] & 1
	oc = 0
	for i in a:
		if i & 1:
			oc += 1
	ec = n - oc
	if not oc:
		return False
	if x == 1:
		return True
	if x == n:
		return oc & 1
	x -= 1
	oc -= 1
	if x <= ec:
		return True
	if oc & 1:
		oc -= 1
	if x & 1:
		if not ec:
			return False
		ec -= 1
		x -= 1
	x -= oc
	if x <= 0:
		return True
	return x <= ec
for _ in range(int(input())):
	print('Yes' if solve() else 'No')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = map(int, input().split())
	p = 0
	for i in a:
		if i & 1:
			p += 1
	if p == 0:
		print('No')
		continue
	if x <= p:
		if p < n:
			print('Yes')
		elif x & 1:
			print('Yes')
		else:
			print('No')
	elif x < n:
		print('Yes')
	elif p & 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(no, yes) = ('No', 'Yes')
	(ones, zeros) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			zeros += 1
		else:
			ones += 1
	if ones == 0:
		print(no)
		continue
	if x > ones:
		if ones % 2 == 1:
			print(yes)
		elif x == n:
			print(no)
		else:
			print(yes)
	elif x % 2 == 1:
		print(yes)
	elif zeros >= 1:
		print(yes)
	else:
		print(no)


import io
import os
from collections import Counter, defaultdict, deque

def solve(N, X, A):
	counter = Counter((x % 2 for x in A))
	evens = counter[0]
	odds = counter[1]
	assert evens + odds == N
	if odds == 0:
		return 'No'
	odds -= 1
	X -= 1
	X -= 2 * (min(X, odds) // 2)
	if X <= evens:
		return 'Yes'
	return 'No'
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
T = int(input())
for t in range(T):
	(N, X) = [int(x) for x in input().split()]
	A = [int(x) for x in input().split()]
	ans = solve(N, X, A)
	print(ans)


t = int(input())
for i in range(t):
	(n, k) = map(int, input().split())
	li = list(map(int, input().split()))
	odd = []
	even = []
	for i in li:
		if i % 2 != 0:
			odd.append(i)
	c = len(odd)
	if c == 0 or (c % 2 == 0 and n == k) or (c == n and k % 2 == 0):
		print('No')
	else:
		print('Yes')


a = int(input())
for _ in range(a):
	l = list()
	le = list()
	lo = list()
	(n, k) = [int(x) for x in input().split()]
	l = list(map(int, input().strip().split()))
	l.sort()
	for x in l:
		if x % 2 == 0:
			le.append(x)
		else:
			lo.append(x)
	ans = 'NO'
	for x in range(1, min(len(lo), k) + 1, 2):
		if len(le) >= k - x:
			ans = 'YES'
			break
	print(ans)


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	p = 0
	for j in range(n):
		if l[j] % 2 != 0:
			p += 1
	q = n - p
	flag = 0
	for i in range(1, x + 1):
		if i % 2 != 0:
			if i <= p and x - i <= q:
				print('Yes')
				flag = 1
				break
	if flag == 0:
		print('No')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, k) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd_count, even_count) = (0, 0)
	for i in arr:
		if i % 2:
			odd_count += 1
		else:
			even_count += 1
	if odd_count == 0 or (k % 2 == 0 and even_count == 0) or (k == n and odd_count % 2 == 0):
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	el = len([i for i in a if i % 2 == 0])
	ol = n - el
	if x % 2 == 0:
		f = 0
		for i in range(1, x, 2):
			if el >= x - i and ol >= i:
				f = 1
				break
		if f == 1:
			print('YES')
		else:
			print('NO')
	else:
		f = 0
		for i in range(0, x, 2):
			if ol >= x - i and el >= i:
				f = 1
				break
		if f == 1:
			print('YES')
		else:
			print('NO')


t = int(input())
while t:
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = []
	even = []
	for i in a:
		if i % 2 == 0:
			even.append(2)
		else:
			odd.append(1)
	i = 1
	flag = 0
	oddlen = len(odd)
	evenlen = len(even)
	while i <= oddlen:
		if x - i <= evenlen and x - i >= 0:
			flag = 1
			break
		else:
			i = i + 2
	if flag == 1:
		print('YES')
	else:
		print('NO')
	t = t - 1


import sys
import math
import heapq

def I():
	return int(sys.stdin.readline())

def IL():
	return list(map(int, sys.stdin.readline().strip().split()))

def ILS():
	return list(map(str, sys.stdin.readline().strip().split()))
t = I()
for iii in range(t):
	(n, x) = IL()
	l = IL()
	odd = 0
	ev = 0
	su = 0
	for ll in l:
		su += ll
		if ll % 2 == 0:
			ev += 1
		else:
			odd += 1
	if odd == 0 or (ev == 0 and x % 2 == 0) or (su % 2 == 0 and x == n):
		print('No')
	else:
		print('Yes')
	pass


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	mas = list(map(int, input().split()))
	mas = list(map(lambda lam: lam % 2 == 0, mas))
	even = sum(mas)
	odd = n - even
	if odd == 0:
		print('No')
	else:
		odd -= 1
		x -= 1
		odd //= 2
		x -= odd * 2
		if x <= 0:
			if x % 2 == 0:
				print('Yes')
			elif even == 0:
				print('No')
			else:
				print('Yes')
		elif even >= x:
			print('Yes')
		else:
			print('No')


t = 1
t = int(input())
while t != 0:
	t -= 1
	(n, x) = map(int, input().split())
	lt = [int(y) for y in input().split()]
	(eve, odd) = ([], [])
	for i in range(n):
		if lt[i] % 2 == 0:
			eve.append(lt[i])
		else:
			odd.append(lt[i])
	ans = 'No'
	for i in range(1, min(x, len(odd)) + 1, 2):
		if len(eve) >= x - i:
			ans = 'Yes'
			break
	print(ans)


for i in range(int(input())):
	a = list(map(int, input().split()))
	l = list(map(int, input().split()))
	(e, o) = (0, 0)
	if a[0] >= a[1]:
		for i in l:
			if i % 2 == 0:
				e += 1
			else:
				o += 1
		if o > 1 and (e != 0 or a[1] % 2 != 0):
			if o % 2 == 0:
				e += o - 2
			else:
				e += o - 1
		if e >= a[1] - 1 and o != 0:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


t = int(input())
for num in range(t):
	(n, x) = map(int, input().split())
	jo = []
	b = []
	a = [int(i) for i in input().split()]
	for i in range(len(a)):
		if a[i] % 2 == 0:
			jo.append(a[i])
		else:
			b.append(a[i])
	if n == x:
		if len(b) % 2 != 0:
			print('YES')
		else:
			print('NO')
	elif x % 2 == 0:
		if len(jo) != 0 and len(b) != 0:
			print('YES')
		else:
			print('NO')
	elif len(b) != 0:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	ar = [int(x) for x in input().split()]
	l = [i % 2 for i in ar]
	c = l.count(True)
	if c == 0 or (c == n and x % 2 == 0) or (c % 2 == 0 and n == x):
		print('NO')
	else:
		print('YES')


for _ in range(int(input())):
	(n, x) = [*map(int, input().split())]
	a = [*map(int, input().split())]
	se = 0
	so = 0
	if x == n:
		if sum(a) % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		for i in a:
			if i % 2 == 0:
				se += 1
			else:
				so += 1
		if se == n:
			print('No')
		elif so == n:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif so % 2 == 1:
			if so >= x:
				print('Yes')
			elif se >= x - so:
				print('Yes')
			else:
				print('No')
		elif so - 1 >= x:
			print('Yes')
		elif se >= x - (so - 1):
			print('Yes')
		else:
			print('No')


tst = int(input())
for tt in range(tst):
	(n, x) = [int(x) for x in input().split()]
	arr = [int(x) for x in input().split()]
	(ev, od) = (0, 0)
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			ev += 1
		else:
			od += 1
	f = 0
	for i in range(1, min(od, x) + 1, 2):
		if ev >= x - i:
			f = 1
			break
	if f == 1:
		print('Yes')
		continue
	print('No')


t = int(input())
for i in range(t):
	(n1, x1) = input().split(' ')
	n = int(n1)
	x = int(x1)
	c = 0
	arr1 = input().split(' ')
	for i in range(n):
		if int(arr1[i]) % 2 == 1:
			c = c + 1
	if c == 0:
		print('No')
	elif c == n:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x < n:
		print('Yes')
	elif c % 2 == 1:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ch = 0
	nc = 0
	for ai in a:
		if ai % 2:
			nc += 1
		else:
			ch += 1
	if nc + ch < x or nc == 0:
		print('no')
	elif ch + 1 >= x:
		print('yes')
	else:
		q = x - 1 - ch
		if q % 2 == 0 and q <= nc - 1:
			print('yes')
		elif q % 2 == 1 and ch >= 1 and (nc >= q + 2) and (q % 2 == 1):
			print('yes')
		elif q % 2 == 0 and ch >= 2 and (nc >= q + 3):
			print('yes')
		else:
			print('no')


for _ in range(int(input())):
	x = input().split(' ')[1]
	a = [*map(int, input().split(' '))]
	nechet = 0
	chet = 0
	for i in range(len(a)):
		if int(a[i]) % 2 == 0:
			chet += 1
	nechet = len(a) - chet
	if int(x) == len(a):
		if int(x) == 1:
			if int(a[0]) % 2 != 0:
				print('yes')
			else:
				print('no')
		elif nechet % 2 != 0:
			print('yes')
		else:
			print('no')
	elif nechet == len(a):
		if int(x) % 2 == 0:
			print('no')
		else:
			print('yes')
	elif nechet > 0:
		print('yes')
	else:
		print('no')


t = int(input())
for kek in range(t):
	(n, x) = map(int, input().split())
	a = list(map(lambda x: x % 2, map(int, input().split())))
	nec = sum(a)
	chet = n - nec
	flag = True
	for i in range(n + 1):
		if flag == False:
			break
		if i <= chet and x - i <= nec and (x - i >= 0) and (i >= 0):
			ans = x - i
			if ans % 2 == 1:
				print('YES')
				flag = False
	if flag:
		print('NO')


import sys
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for v in l:
		if v % 2:
			odd += 1
		else:
			even += 1
	minOdd = max(x - even, 0)
	maxOdd = min(odd, x)
	works = False
	for i in range(minOdd, maxOdd + 1):
		if i % 2:
			works = True
			break
	print('Yes' if works else 'No')


for t in range(int(input())):
	(n, x) = map(int, input().split())
	arr = [int(x) for x in input().split()]
	odd = 0
	even = 0
	for i in range(n):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	ans = 'No'
	for i in range(min(even + 1, x + 1)):
		if x - i <= odd and (x - i) % 2 == 1:
			ans = 'Yes'
	print(ans)


import sys
input = sys.stdin.readline

def main():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		a = map(int, input().split())
		even = odd = 0
		for i in a:
			if i % 2 == 0:
				even += 1
			else:
				odd += 1
		ok = False
		for i in range(1, odd + 1, 2):
			if i <= x <= i + even:
				ok = True
		print('Yes' if ok else 'No')
main()


for i in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	if n == x:
		if sum(l) & 1:
			print('YES')
		else:
			print('NO')
	else:
		sm = 0
		cod = 0
		coe = 0
		for i in l:
			if i & 1:
				cod += 1
			else:
				coe += 1
		if cod == n and x % 2 == 0:
			print('NO')
		elif coe == n:
			print('NO')
		else:
			print('YES')


def check(evens, odds, k):
	for i in range(k):
		even = i
		odd = k - i
		if even <= evens and odd <= odds:
			if (k - i) % 2 != 0:
				return True
	return False
t = int(input())
for it in range(t):
	(n, k) = map(int, input().split())
	L = list(map(int, input().split()))
	evens = 0
	odds = 0
	for i in range(n):
		if L[i] % 2 == 0:
			evens += 1
		else:
			odds += 1
	if check(evens, odds, k):
		print('Yes')
	else:
		print('No')


def problem():
	(n, x) = [int(s) for s in input().split()]
	(n, odds, evens) = (0, 0, 0)
	for num in input().split():
		if int(num) % 2:
			odds += 1
		else:
			evens += 1
		n += 1
	odds -= 1
	x -= 1
	if x % 2:
		x -= 1
		evens -= 1
	if odds < 0 or evens < 0:
		print('No')
		return
	if odds % 2:
		odds -= 1
	x -= odds
	x -= evens
	if x <= 0:
		print('Yes')
	else:
		print('No')
for i in range(int(input())):
	problem()


for j in range(int(input())):
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))
	ce = 0
	co = 0
	for i in range(n):
		if lis[i] % 2 != 0:
			co += 1
		else:
			ce += 1
	if n == x and n % 2 == 0:
		if co % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif n == x and n % 2 != 0:
		if co % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif n > x and x % 2 == 0:
		if co >= 1 and ce >= 1:
			print('Yes')
		else:
			print('No')
	elif n > x and x % 2 != 0:
		if co >= 1 and ce >= 1 or co == n:
			print('Yes')
		else:
			print('No')


from math import inf, log2

class SegmentTree:

	def __init__(self, array, func=max):
		self.n = len(array)
		self.size = 2 ** (int(log2(self.n - 1)) + 1) if self.n != 1 else 1
		self.func = func
		self.default = 0 if self.func != min else inf
		self.data = [self.default] * (2 * self.size)
		self.process(array)

	def process(self, array):
		self.data[self.size:self.size + self.n] = array
		for i in range(self.size - 1, -1, -1):
			self.data[i] = self.func(self.data[2 * i], self.data[2 * i + 1])

	def query(self, alpha, omega):
		if alpha == omega:
			return self.data[alpha + self.size]
		res = self.default
		alpha += self.size
		omega += self.size + 1
		while alpha < omega:
			if alpha & 1:
				res = self.func(res, self.data[alpha])
				alpha += 1
			if omega & 1:
				omega -= 1
				res = self.func(res, self.data[omega])
			alpha >>= 1
			omega >>= 1
		return res

	def update(self, index, value):
		index += self.size
		self.data[index] = value
		index >>= 1
		while index:
			self.data[index] = self.func(self.data[2 * index], self.data[2 * index + 1])
			index >>= 1
import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
from math import gcd, ceil

def pre(s):
	n = len(s)
	pi = [0] * n
	for i in range(1, n):
		j = pi[i - 1]
		while j and s[i] != s[j]:
			j = pi[j - 1]
		if s[i] == s[j]:
			j += 1
		pi[i] = j
	return pi

def prod(a):
	ans = 1
	for each in a:
		ans = ans * each
	return ans

def lcm(a, b):
	return a * b // gcd(a, b)

def binary(x, length=16):
	y = bin(x)[2:]
	return y if len(y) >= length else '0' * (length - len(y)) + y
for _ in range(int(input()) if True else 1):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	for i in a:
		if i % 2:
			odd += 1
	even = n - odd
	if x > n:
		print('NO')
		continue
	if n == x and odd % 2 == 0:
		print('NO')
		continue
	if n == x and odd % 2 == 1:
		print('YES')
		continue
	if not even:
		print('YES' if x % 2 else 'NO')
		continue
	if odd >= 1:
		print('YES')
		continue
	print('NO')


t = int(input())
for _ in range(t):
	(n, x) = [int(a) for a in input().split()]
	arr = [int(b) for b in input().split()]
	even = 0
	for y in arr:
		if y % 2 == 0:
			even += 1
	odd = n - even
	if odd == 0:
		print('No')
	else:
		odd -= 1
		x -= 1
		if even >= x:
			print('Yes')
		else:
			pairodd = min(2 * (odd // 2), 2 * (x // 2))
			x -= pairodd
			print('Yes' if even >= x else 'No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	(e, o, s) = (0, 0, 0)
	for v in map(int, input().split()):
		if v & 1:
			o += 1
		else:
			e += 1
		s += v
	if n == k:
		print('Yes' if s & 1 else 'No')
	elif not o:
		print('No')
	elif not k & 1 and (not e):
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.buffer.readline

def I():
	return list(map(int, input().split()))

def sieve(n):
	a = [1] * n
	for i in range(2, n):
		if a[i]:
			for j in range(i * i, n, i):
				a[j] = 0
	return a
for __ in range(int(input())):
	(n, x) = I()
	arr = I()
	odds = 0
	evens = 0
	for i in range(n):
		if arr[i] % 2:
			odds += 1
		else:
			evens += 1
	if x % 2:
		c = 2
		i = 0
	else:
		c = 2
		i = 1
	f = 0
	for e in range(i, min(evens + 1, x + 1), c):
		if odds >= x - e:
			f = 1
	if f:
		print('Yes')
	else:
		print('No')


t = int(input())
ans = []
for i in range(t):
	(n, x) = map(int, input().split())
	nums = list(map(int, input().split()))
	counter = 0
	for j in nums:
		if j % 2 == 1:
			counter += 1
	if n != x:
		if counter != 0 and counter != n:
			ans.append('Yes')
		elif counter == n and x % 2 == 1:
			ans.append('Yes')
		else:
			ans.append('No')
	elif counter % 2 == 1:
		ans.append('Yes')
	else:
		ans.append('No')
for i in ans:
	print(i)


a = int(input())
for i in range(a):
	(n, x) = map(int, input().split())
	z = list(map(int, input().split()))
	eve = 0
	odd = 0
	for i in range(len(z)):
		if z[i] % 2 == 1:
			odd += 1
		else:
			eve += 1
	if odd == 0:
		print('No')
		continue
	temp = x - eve
	if temp <= 0:
		print('Yes')
	elif temp % 2 == 0:
		if eve == 0:
			print('No')
		else:
			eve -= 1
			temp = x - eve
			if odd >= temp:
				print('Yes')
			else:
				print('No')
	elif odd >= temp:
		print('Yes')
	else:
		print('No')


test = int(input())
for _ in range(test):
	ce = 0
	co = 0
	(n, x) = map(int, input().split())
	lis = list(map(int, input().split()))[:n]
	for i in range(n):
		if lis[i] % 2 == 1:
			co += 1
		else:
			ce += 1
	mi = min(ce, x - 1)
	d = x - mi
	if d % 2 == 0:
		d += 1
	if co >= d and d <= x:
		print('Yes')
	else:
		print('No')


t = int(input())
x_list = []
arr_list = []
for i in range(t):
	(n, x) = input().split()
	x_list.append(int(x))
	arr_list.append([int(x) for x in input().split()])
for i in range(t):
	odd_count = [True if x % 2 == 1 else False for x in arr_list[i]].count(True)
	if odd_count == len(arr_list[i]):
		if x_list[i] % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x_list[i] < len(arr_list[i]):
		if odd_count >= 1:
			print('Yes')
		else:
			print('No')
	elif odd_count % 2 == 1:
		print('Yes')
	else:
		print('No')


n = int(input())
for _ in range(n):
	(n, k) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	(x, y) = (0, 0)
	for i in a:
		if i % 2 == 0:
			x += 1
		else:
			y += 1
	ok = 'No'
	for i in range(y + 1):
		if i & 1 and i <= k and (k - i <= x):
			ok = 'Yes'
	print(ok)


import sys
import math
import operator as op
from functools import reduce
from sys import maxsize

def read_line():
	return sys.stdin.readline()[:-1]

def read_int():
	return int(sys.stdin.readline())

def read_int_line():
	return [int(v) for v in sys.stdin.readline().split()]

def read_float_line():
	return [float(v) for v in sys.stdin.readline().split()]

def ncr(n, r):
	r = min(r, n - r)
	numer = reduce(op.mul, range(n, n - r, -1), 1)
	denom = reduce(op.mul, range(1, r + 1), 1)
	return numer / denom

def nc2(n):
	return n * (n - 1) // 2
t = read_int()
for i in range(t):
	(n, x) = read_int_line()
	a = read_int_line()
	d = {}
	d[0] = 0
	d[1] = 0
	for i in range(n):
		d[a[i] % 2] += 1
	o = d[1]
	e = d[0]
	f = False
	for i in range(x + 1):
		a = i
		b = x - i
		if e >= a and o >= b and (b % 2 != 0):
			f = True
			break
	if f:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.buffer.readline
for t in range(int(input())):
	(n, x) = map(int, input().split())
	a = [int(i) for i in input().split()]
	odds = 0
	evens = 0
	for i in a:
		if i & 1:
			odds += 1
		else:
			evens += 1
	Found = False
	for i in range(1, min(x, odds) + 1, 2):
		if x - i <= evens:
			Found = True
	if Found:
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline

def solve():
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	(co, ce) = (0, 0)
	for i in range(n):
		if l[i] % 2 != 0:
			co += 1
		else:
			ce += 1
	if co == 0:
		print('no')
	elif n == k:
		if co % 2:
			print('yes')
		else:
			print('no')
	elif k < n:
		if ce == 0 and k % 2 == 0:
			print('no')
		elif ce > 0 and k % 2 == 0:
			print('yes')
		else:
			print('yes')
for _ in range(int(input())):
	solve()


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	o = sum((i % 2 for i in a))
	e = n - o
	print('Yes' if o >= x and (x % 2 or (not x % 2 and e >= 1)) or (o and o < x and (o % 2 or (not o % 2 and o - 1 + e >= x))) else 'No')


T = int(input())
for _ in range(T):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for a in A:
		if a % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('no')
		continue
	if x % 2 == 1:
		i = 0
		ans = False
		while i <= x:
			if even >= i and odd >= x - i:
				ans = True
				break
			i += 2
		if ans:
			print('yes')
		else:
			print('no')
		continue
	i = 1
	ans = False
	while i <= x:
		if even >= x - i and odd >= i:
			ans = True
			break
		i += 2
	if ans:
		print('yes')
	else:
		print('no')


for lo in range(int(input())):
	(n, x) = map(int, input().split())
	ls = [int(x) for x in input().split()]
	c1 = 0
	for i in ls:
		if i % 2 == 0:
			c1 += 1
	c2 = n - c1
	if x % 2 == 0:
		ans = 'NO'
		if n > x and c1 != 0 and (c2 != 0):
			ans = 'YES'
		if n == x and c2 % 2 != 0:
			ans = 'YES'
		print(ans)
	else:
		ans = 'NO'
		if c2 >= x:
			ans = 'YES'
		if n > x and c2 != 0:
			ans = 'YES'
		if n == x and c2 % 2 != 0:
			ans = 'YES'
		print(ans)


ans = []
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = []
	even = []
	for i in range(n):
		if l[i] % 2 == 0:
			even.append(l[i])
		else:
			odd.append(l[i])
	if x % 2 == 1:
		if len(odd) >= x:
			print('Yes')
		elif len(odd) % 2 == 1 and len(even) >= x - len(odd):
			print('Yes')
		elif len(odd) % 2 == 0 and len(odd) - 1 >= 1 and (len(even) >= x - len(odd) + 1):
			print('Yes')
		else:
			print('No')
	elif len(even) > 0 and len(odd) >= x - 1:
		print('Yes')
	elif len(even) >= 3 and len(odd) > 0:
		print('Yes')
	else:
		print('No')


from sys import stdin, stdout
import math
n = int(stdin.readline())
for i in range(n):
	arr = [int(x) for x in stdin.readline().split()]
	ele = [int(x) for x in stdin.readline().split()]
	odd_count = 0
	even_count = 0
	yes = 0
	for j in ele:
		if j % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	if odd_count % 2 == 0:
		if odd_count == 0 or (even_count == 0 and arr[1] % 2 == 0):
			yes = 0
		elif odd_count - 1 + even_count >= arr[1]:
			yes = 1
		elif odd_count - 1 + even_count < arr[1]:
			yes = 0
	else:
		if odd_count + even_count >= arr[1]:
			yes = 1
		if even_count == 0 and arr[1] % 2 == 0:
			yes = 0
	if yes:
		stdout.write('Yes' + '\n')
	else:
		stdout.write('No' + '\n')


loop = int(input())
for i in range(loop):
	astr = input()
	lst1 = astr.split()
	n = int(lst1[0])
	p = int(lst1[1])
	odd = list()
	even = list()
	rawnum = input()
	rawlist = rawnum.split()
	for rn in rawlist:
		if int(rn) % 2 == 0:
			even.append(rn)
		elif int(rn) % 2 != 0:
			odd.append(rn)
	k1 = len(odd)
	k2 = len(even)
	if k2 < 1:
		k2 = 0
	if k1 < 1:
		print('NO')
		continue
	elif k1 >= 1:
		if p - 1 - k2 <= 0:
			print('Yes')
		elif (p - 1 - k2) % 2 == 0:
			print('Yes')
		elif p - k2 <= k1 - 1 and k2 > 0:
			print('Yes')
		else:
			print('No')


def solve():
	(n, x) = [int(x) for x in input().split()]
	a = [int(x) for x in input().split()]
	(evens, odds) = (0, 0)
	for num in a:
		if num % 2 == 0:
			evens += 1
		else:
			odds += 1
	for num in range(1, odds + 1, 2):
		if num > x:
			break
		if num == x or x - num <= evens:
			return 'Yes'
	return 'No'
T = int(input())
for case in range(T):
	print(solve())


from math import *
t = int(input())

def solve(a, m):
	cntodd = 0
	for x in a:
		if x & 1 == 1:
			cntodd += 1
	cnteven = len(a) - cntodd
	for i in range(0, min(cnteven + 1, m)):
		if m - i <= cntodd and (m - i) % 2 == 1:
			return True
	return False
for _ in range(t):
	(n, m) = map(int, input().split())
	if solve(list(map(int, input().split())), m):
		print('Yes')
	else:
		print('No')


n = int(input())
for i in range(0, n):
	(n, x) = map(int, input().split())
	num = list(map(int, input().split()))
	s = sum([i % 2 for i in num])
	e = n - s
	ans = 'No'
	for j in range(0, x):
		if j <= e and x - j <= s and ((x - j) % 2 == 1):
			ans = 'Yes'
			break
	print(ans)


el = int(input())
for k in range(el):
	ar = []
	for i in input().split(' '):
		ar.append(int(i))
	odd = 0
	even = 0
	count = ar[1]
	for j in input().split(' '):
		temp = int(j)
		if temp % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	twos = (odd - 1) // 2
	if odd == 0:
		print('No')
	elif even + 1 >= count:
		print('Yes')
	else:
		count = count - 1
		if count % 2 == 0 and count / 2 <= twos:
			print('Yes')
		elif count % 2 != 0 and even == 0:
			print('No')
		elif count % 2 == 0 and count / 2 > twos:
			temp = count - 2 * twos
			if temp > even:
				print('No')
			else:
				print('Yes')
		elif count % 2 != 0 and count / 2 <= twos:
			print('Yes')
		else:
			temp = count - 2 * twos
			if temp > even:
				print('No')
			else:
				print('Yes')


for ti in range(int(input())):
	(n, x) = map(int, input().split())
	numbers = list(map(int, input().split()))
	odd_count = sum([i % 2 for i in numbers])
	even_count = n - odd_count
	if odd_count == 0:
		print('No')
	elif even_count >= x - 1:
		print('Yes')
	elif x % 2 == 0 and even_count % 2 == 1:
		print('Yes')
	elif x % 2 == 1 and even_count % 2 == 0:
		print('Yes')
	elif odd_count > x - even_count and even_count > 0:
		print('Yes')
	else:
		print('No')


def can_select(L, x):
	n = len(L)
	even = 0
	odd = 0
	for i in L:
		if i % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if odd == 0:
		return 'No'
	if even == 0:
		if x % 2 == 0:
			return 'No'
		else:
			return 'Yes'
	if x == n and odd % 2 == 0:
		return 'No'
	else:
		return 'Yes'
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	L = list(map(int, input().split()))
	print(can_select(L, x))


n = int(input())
for i in range(n):
	kch = 0
	knch = 0
	a = str(input()).split(' ')
	h = int(a[1])
	b = str(input()).split(' ')
	for g in range(int(a[0])):
		if int(b[g]) % 2 == 0:
			kch += 1
		else:
			knch += 1
	if knch == 0:
		print('No')
	else:
		knch -= 1
		h -= 1
		if h == 0:
			print('Yes')
		else:
			while h != 0:
				if h - 2 >= 0 and knch - 2 >= 0:
					h -= 2
					knch -= 2
					if h == 0:
						print('Yes')
				elif h > kch:
					print('No')
					break
				else:
					print('Yes')
					break


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	a = 0
	b = 0
	for el in arr:
		if el % 2 == 1:
			a += 1
		if el % 2 == 0:
			b += 1
	if a == 0:
		print('No')
		continue
	if x == n:
		if a % 2 == 0:
			print('No')
		else:
			print('Yes')
		continue
	if x % 2 == 0:
		if b == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	odd = []
	even = []
	c = map(int, input().split())
	for j in c:
		if j % 2 == 0:
			even.append(j)
		else:
			odd.append(j)
	o = len(odd)
	if o % 2 == 0:
		temp = 0
	else:
		temp = 1
	e = len(even)
	if x == n:
		if o % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif o == 0:
		print('No')
	elif e > 0 or x % 2 == 1:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = sum([i % 2 for i in l])
	even = len(l) - odd
	ans = 'NO'
	for e in range(x):
		if e <= even and x - e <= odd and (x - e) % 2:
			ans = 'YES'
	print(ans)


def main():
	tc = int(input())
	while tc != 0:
		tc -= 1
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		(o, e) = (0, 0)
		for i in range(n):
			if a[i] % 2 == 1:
				o += 1
			else:
				e += 1
		if o == 0:
			print('NO')
		elif x % 2 == 1:
			if o > x:
				o = x
			if o % 2 == 0:
				o -= 1
			if o + e >= x:
				print('Yes')
			else:
				print('no')
		elif x % 2 == 0:
			if o > x:
				o = x
			if o % 2 == 0:
				o -= 1
			if o + e >= x:
				print('yes')
			else:
				print('no')
main()


def main_function():
	from sys import stdin
	input = stdin.readline
	from sys import stdout
	print = stdout.write
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		(che, nechet, flag) = (0, 0, False)
		for _ in range(n):
			if a[_] % 2 != 0:
				nechet += 1
			else:
				che += 1
		for i in range(1, x + 1, 2):
			if i <= nechet and x - i <= che:
				flag = True
				break
		if flag:
			print('Yes\n')
		else:
			print('No\n')
main_function()


t = int(input())
for i in range(t):
	(a, b) = input().split()
	(n, x) = (int(a), int(b))
	numbers = map(int, input().split())
	evens = 0
	odds = 0
	useful_odds = 0
	can = False
	for number in numbers:
		if number % 2 == 0:
			evens += 1
		else:
			odds += 1
			useful_odds = odds if odds % 2 == 1 else odds - 1
		if evens == 0:
			if useful_odds == x:
				can = True
				break
		elif useful_odds > 0 and evens + useful_odds >= x:
			can = True
			break
	if can:
		print('Yes')
	else:
		print('No')


def solve():
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(len(arr)):
		if arr[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 0:
		if odd == 0 or even == 0:
			return 'No'
		odd -= 1
		even -= 1
		if even // 2 + odd // 2 < (x - 2) // 2:
			return 'No'
		else:
			return 'Yes'
	if x % 2 == 1:
		if odd == 0:
			return 'No'
		odd -= 1
		if even // 2 + odd // 2 < (x - 1) // 2:
			return 'No'
		else:
			return 'Yes'
for _ in range(int(input())):
	print(solve())


from collections import deque
from collections import OrderedDict
import math
import sys
import os
from io import BytesIO
import threading
import bisect
import heapq
from io import BytesIO, IOBase
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
input = sys.stdin.readline
ara = [0] * 100005
listOdd = list()

def aratosfen():
	global ara
	for i in range(2, int(math.sqrt(len(ara)))):
		if ara[i] == 0:
			for j in range(i * 2, len(ara), i):
				ara[j] = 1
	global listOdd
	for i in range(2, len(ara)):
		if ara[i] == 0:
			listOdd.append(i)
for t in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	cOdd = 0
	for i in range(n):
		if arr[i] % 2 == 1:
			cOdd += 1
	if cOdd == 0:
		print('No')
	elif x == n and cOdd % 2 == 0:
		print('No')
	elif x % 2 == 0 and cOdd == n:
		print('No')
	else:
		print('Yes')


from __future__ import division, print_function
from sys import stdin, stdout
import bisect
import math
import heapq
i_m = 9223372036854775807

def inin():
	return int(input())

def stin():
	return input()

def spin():
	return map(int, stin().split())

def lin():
	return list(map(int, stin().split()))

def modinv(n, p):
	return pow(n, p - 2, p)

def GCD(x, y):
	x = abs(x)
	y = abs(y)
	if min(x, y) == 0:
		return max(x, y)
	while y:
		(x, y) = (y, x % y)
	return x

def Divisors(n):
	l = []
	for i in range(1, int(math.sqrt(n) + 1)):
		if n % i == 0:
			if n // i == i:
				l.append(i)
			else:
				l.append(i)
				l.append(n // i)
	return l
prime = []

def SieveOfEratosthenes(n):
	global prime
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	f = []
	for p in range(2, n):
		if prime[p]:
			f.append(p)
	return f
q = []

def dfs(n, d, v, c):
	global q
	v[n] = 1
	x = d[n]
	q.append(n)
	j = c
	for i in x:
		if i not in v:
			f = dfs(i, d, v, c + 1)
			j = max(j, f)
	return j
for _ in range(inin()):
	(n, x) = spin()
	l = lin()
	s = 0
	for i in range(len(l)):
		if l[i] % 2 != 0:
			s += 1
	if s == 0 or (n == x and s % 2 == 0) or (s == n and x % 2 == 0):
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline
from collections import Counter
t = int(input())
for tests in range(t):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	C = Counter()
	for a in A:
		C[a % 2] += 1
	if C[1] == 0:
		print('No')
		continue
	C[1] -= 1
	x -= 1
	x -= min(x, C[1]) // 2 * 2
	if x <= C[0]:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = [int(x) for x in input().split()]
	arrs = [int(x) for x in input().split()]
	odds = sum([x % 2 for x in arrs])
	if odds == 0 or (odds % 2 == 0 and n == k) or (odds == n and k % 2 == 0):
		print('No')
	else:
		print('Yes')


try:
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		arr = [int(i) for i in input().split()]
		(even, odd) = (0, 0)
		for i in range(n):
			if arr[i] % 2 == 0:
				even += 1
			else:
				odd += 1
		if x % 2 == 0:
			k = min(x - 1, even)
			if k % 2 == 0 and k != 0:
				k -= 1
			if even == 0 or odd == 0:
				print('No')
			elif x - k <= odd:
				print('YES')
			else:
				print('NO')
		else:
			k = min(x, odd)
			if k % 2 == 0:
				k -= 1
			if odd == 0:
				print('No')
			elif x - k <= even:
				print('YES')
			else:
				print('NO')
except:
	pass


a = int(input())
for i in range(a):
	(n, x) = map(int, input().split())
	g = [int(i) for i in input().split()]
	c = 0
	for i in range(n):
		if g[i] % 2 == 1:
			c += 1
	if c == 0 or (c == n and x % 2 == 0):
		print('No')
		continue
	if c % 2 == 0 and x == n:
		print('No')
	else:
		print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(no_of_even, no_of_odd) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			no_of_even += 1
		else:
			no_of_odd += 1
	flag = 0
	for i in range(1, x + 1, 2):
		if no_of_odd >= i and no_of_even >= x - i:
			print('yes')
			flag = 1
			break
	if flag == 0:
		print('No')


for i in range(int(input())):
	(n, k) = input().split()
	(n, k) = (int(n), int(k))
	l = [int(j) for j in input().split()]
	c = 0
	for g in l:
		if not g % 2 == 0:
			c += 1
	if n == c and k % 2 == 0:
		print('No')
	elif k == 1 and c >= 1:
		print('Yes')
	elif not c % 2 == 0:
		print('Yes')
	elif k <= n - 1 and c > 0:
		print('Yes')
	else:
		print('No')


import sys
from sys import stdin
input = iter(sys.stdin.buffer.read().decode().splitlines()).__next__

def neo():
	return map(int, input().split())

def Neo():
	return list(map(int, input().split()))
for _ in range(int(input())):
	(n, x) = neo()
	A = Neo()
	b = [i % 2 for i in A]
	nep = b.count(1)
	if nep % 2 == 0 and x == n or nep == 0 or (x % 2 == 0 and nep == n):
		print('NO')
	else:
		print('YES')


import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odds = 0
	for i in a:
		odds += i % 2
	evens = n - odds
	if odds == 0:
		print('NO')
		continue
	odds -= 1
	if x % 2 == 0:
		if evens == 0:
			print('NO')
			continue
		evens -= 1
		x -= 1
	x -= 1
	if (odds // 2 + evens // 2) * 2 >= x:
		print('YES')
	else:
		print('NO')


import math
for w in range(int(input())):
	(x, y) = list(map(int, input().split()))
	par = 0
	odd = 0
	for i in input().split():
		if int(i) % 2 == 0:
			par += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
	elif y % 2 == 0 and par == 0:
		print('No')
	elif y % 2 != 0 and y <= odd:
		print('Yes')
	else:
		y -= par
		if y <= 0:
			print('Yes')
		elif y % 2 == 0 and odd == y:
			print('No')
		else:
			print('Yes')


t = int(input())
for you in range(t):
	l = input().split()
	n = int(l[0])
	x = int(l[1])
	l = input().split()
	li = [int(i) for i in l]
	count = 0
	for i in li:
		if i % 2 == 1:
			count += 1
	odd = count
	even = n - count
	poss = 0
	for i in range(min(odd + 1, x + 1)):
		if i + even >= x and i % 2 == 1:
			poss = 1
			break
	if poss:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = list(map(int, input().strip().split()))
	a = list(map(int, input().strip().split()))
	even = []
	odd = []
	for i in range(n):
		if a[i] % 2 == 0:
			even.append(a[i])
		else:
			odd.append(a[i])
	c = 1
	if x % 2 == 0 and n != x:
		if len(even) == 0 or len(odd) == 0:
			c = 0
			print('No')
	elif x % 2 == 1 and n != x:
		if len(odd) == 0:
			c = 0
			print('No')
	if n == x:
		if len(odd) % 2 == 0:
			c = 0
			print('No')
	if c:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(o, e) = (0, 0)
	for z in a:
		if z & 1:
			o += 1
		else:
			e += 1
	if o >= x:
		if x & 1 or e > 0:
			print('Yes')
		else:
			print('No')
	elif o & 1:
		print('Yes')
	elif x == n or o == 0:
		print('No')
	else:
		print('Yes')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	count_zero = 0
	count_one = 0
	str = input()
	array1 = [item for item in map(int, str.split())]
	for tem in range(n):
		if array1[tem] % 2 == 0:
			array1[tem] = 0
			count_zero += 1
		else:
			array1[tem] = 1
			count_one += 1
	if count_one == 0:
		print('No')
	elif x > count_zero:
		if (x - count_zero) % 2 == 0 and x == n:
			print('No')
		elif count_zero == 0 and x % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


for test in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if even == n or (sum(arr) % 2 == 0 and n == x):
		print('No')
	elif odd == n:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


rw = int(input())
for ewqr in range(rw):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	nec = 0
	c = 0
	for i in a:
		if i % 2 == 0:
			c += 1
		else:
			nec += 1
	if nec == 0:
		print('NO')
		continue
	if nec == n and x % 2 == 0:
		print('NO')
		continue
	if x == n and sum(a) % 2 == 0:
		print('NO')
		continue
	print('YES')


for __ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(oddc, evenc) = (0, 0)
	for i in range(n):
		if a[i] % 2 == 1:
			oddc += 1
		else:
			evenc += 1
	if oddc >= x and x % 2 == 1:
		print('Yes')
	elif oddc >= x - 1 and x % 2 == 0 and (evenc >= 1):
		print('Yes')
	elif 1 <= oddc < x and evenc >= x - oddc and (oddc % 2 == 1):
		print('Yes')
	elif 1 <= oddc < x and evenc >= x - oddc + 1 and (oddc % 2 == 0):
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odd = sum((v % 2 for v in map(int, input().split())))
	even = n - odd
	for todd in range(1, min(x, odd) + 1, 2):
		if even >= x - todd:
			print('Yes')
			break
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	l[0] = l[0] & 1
	for i in range(1, n):
		l[i] = l[i] & 1
	odd = 0
	for i in l:
		if i == 1:
			odd += 1
	even = n - odd
	flag = False
	if n == k and odd & 1:
		flag = True
	if 0 < k < n and odd and (k & 1 or (k % 2 == 0 and even)):
		flag = True
	if flag:
		print('Yes')
	else:
		print('No')


import sys
import math
input = sys.stdin.readline

def inp():
	return int(input())

def inara():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
t = inp()
for _ in range(t):
	(n, x) = invr()
	ara = inara()
	odd = 0
	even = 0
	for num in ara:
		if num % 2:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('NO')
		continue
	limit = min(odd, x)
	if limit % 2 == 0:
		limit -= 1
	ans = 0
	flag = True
	for i in range(0, limit):
		ans += 1
	for i in range(limit, x):
		if even:
			ans += 0
			even -= 1
		else:
			flag = False
			print('NO')
			break
	if flag:
		if ans % 2:
			print('YES')
		else:
			print('NO')


import collections, heapq, itertools, math, functools
groupby = itertools.groupby
rs = lambda : input()
ri = lambda : int(input())
rm = lambda : map(int, input().split())
rai = lambda : [int(x) for x in input().split()]

def solve():
	e = o = 0
	for num in a:
		if num % 2:
			o += 1
		else:
			e += 1
	if o == 0:
		return False
	elif x % 2 == 0 and o == n:
		return False
	elif x == n and o % 2 == 0:
		return False
	return True
for t in range(ri()):
	(n, x) = rm()
	a = rai()
	if solve():
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline

def solve(x, len_even, len_odd):
	odd = False
	while x > 0 and len_odd > 0:
		if odd and len_even >= x:
			return True
		x -= 1
		len_odd -= 1
		odd = not odd
	return odd and len_even >= x
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = []
	odd = []
	for v in arr:
		if v % 2 == 0:
			even.append(v)
		else:
			odd.append(v)
	len_even = len(even)
	len_odd = len(odd)
	if solve(x, len_even, len_odd):
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	(n, m) = map(int, input().split())
	a = list(map(int, input().split()))
	b1 = 0
	b2 = 0
	for j in range(n):
		if a[j] % 2 == 1:
			b1 += 1
		else:
			b2 += 1
	if b1 == 0:
		print('No')
	else:
		if b1 > m:
			b1 = m
		if b1 % 2 == 0:
			b1 -= 1
		if m - b1 <= b2:
			print('Yes')
		else:
			print('No')


t = int(input())
for f in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for f in l:
		if f % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
	elif e == 0 and x % 2 == 0:
		print('No')
	elif e == 0 and x % 2 != 0:
		print('Yes')
	elif e != 0:
		if o % 2 != 0:
			print('Yes')
		else:
			o -= 1
			if o + e >= x:
				print('Yes')
			else:
				print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	A = list(map(int, input().split()))
	e = 0
	o = 0
	for i in A:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	i = 1
	f = False
	while i <= o and i <= x:
		req = x - i
		if req <= e:
			f = True
			break
		i += 2
	if f:
		print('YES')
	else:
		print('NO')


testcases = int(input())
for i in range(testcases):
	(n, x) = map(int, input().split())
	integer_array = list(map(int, input().split()))
	odd_even_dict = {'odd': 0, 'even': 0}
	for ele in integer_array:
		if ele % 2 == 1:
			odd_even_dict['odd'] += 1
		else:
			odd_even_dict['even'] += 1
	if odd_even_dict['odd'] == 0:
		usable_odds = 0
	elif odd_even_dict['odd'] % 2 == 1:
		usable_odds = odd_even_dict['odd']
	else:
		usable_odds = odd_even_dict['odd'] - 1
	if usable_odds == 0:
		print('No')
	elif x % 2 == 1:
		if x > usable_odds + odd_even_dict['even']:
			print('No')
		else:
			print('Yes')
	elif odd_even_dict['even'] == 0:
		print('No')
	elif x > usable_odds + odd_even_dict['even']:
		print('No')
	else:
		print('Yes')


def solve():
	(n, x) = map(int, input().split())
	nums = list(map(int, input().split()))
	odd = 0
	even = 0
	for val in nums:
		if val % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	i = 1
	while i <= x:
		if odd >= i and even >= x - i:
			flag = 1
			break
		i += 2
	if flag == 1:
		print('YES')
	else:
		print('NO')
t = int(input())
while t:
	solve()
	t -= 1


for ekbaar in range(1):
	tinn = 1
	tinn = int(input())
	for tin in range(tinn):
		(n, m) = map(int, input().split())
		a = list(map(int, input().split()))
		x = 0
		y = 0
		for _ in range(len(a)):
			if a[_] % 2 == 1:
				x += 1
			else:
				y += 1
		if x == 0:
			print('NO')
		elif x >= m and m % 2 == 1:
			print('YES')
		elif x >= m and m % 2 == 0 and (y > 0):
			print('YES')
		elif x >= m and m % 2 == 0 and (y == 0):
			print('NO')
		elif x < m and y > 0 and (n != m):
			print('YES')
		elif x < m and m == n and (x % 2 == 0):
			print('NO')
		else:
			print('YES')


def f(arr, x):
	even = 0
	odd = 0
	for a in arr:
		if a % 2 == 0:
			even += 1
		if a % 2 != 0:
			odd += 1
	while x:
		if x % 2 != 0 and odd >= x:
			print('Yes')
			return
		even -= 1
		x -= 1
		if even < 0:
			print('No')
			return
	print('No')
t = int(input())
for _ in range(t):
	(n, x) = input().split(' ')
	(n, x) = (int(n), int(x))
	arr = [int(a) for a in input().split(' ')]
	f(arr, x)


t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	a = list(map(int, input().split()))
	if x == n:
		if sum(a) % 2 == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	even = 0
	odd = 0
	for j in range(len(a)):
		if a[j] % 2 == 0:
			even += 1
		else:
			odd += 1
	a = 1
	flag = 0
	for j in range(x):
		if a <= odd and x - a <= even:
			if a + (x - a) == x:
				print('Yes')
				flag = 1
				break
		a += 2
		if a > x:
			break
	if flag != 1:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	ar = [int(x) for x in input().split()]
	od = 0
	ev = 0
	for i in ar:
		if i % 2 == 1:
			od += 1
		else:
			ev += 1
	if od == 0:
		print('No')
		continue
	if od % 2 == 0:
		od -= 1
	if od == 0:
		print('No')
		continue
	if ev == 0 and x % 2 == 0:
		print('No')
		continue
	ans = od + ev
	if ans >= x:
		print('Yes')
	else:
		print('No')


t = int(input())

def solve(x, arr, n):
	odd = arr.count(1)
	even = n - odd
	for i in range(1, x + 1, 2):
		if i <= odd and x - i <= even:
			return 'Yes'
	return 'No'
while t:
	(n, X) = map(int, input().split())
	arr = [int(x) & 1 for x in input().split()]
	print(solve(X, arr, n))
	t -= 1


n = int(input())
for i in range(n):
	s = input().split(' ')
	s1 = input().split(' ')
	n = int(s[0])
	m = int(s[1])
	a = []
	for c in s1:
		a.append(int(int(c) % 2))
	odd = sum(a)
	even = len(a) - odd
	_sum = even
	_sum += odd - (odd + 1) % 2
	if _sum >= m and (even == 0 and m % 2 == 0) == False and (odd > 0):
		print('Yes')
	else:
		print('No')


try:
	t = int(input())
	while t:
		(n, x) = [int(k) for k in input().split()]
		l = [int(y) for y in input().split()]
		eve = 0
		odd = 0
		for i in range(n):
			if l[i] % 2 == 0:
				eve += 1
			else:
				odd += 1
		if eve == 0:
			if x % 2 == 1:
				print('Yes')
			else:
				print('No')
		elif odd == 0:
			print('No')
		elif odd % 2 == 1 and eve != 0 and (odd != 0):
			print('Yes')
		elif odd % 2 == 0 and eve != 0 and (odd != 0):
			c = odd - 1 + eve
			if x <= n - 1:
				print('Yes')
			else:
				print('No')
		else:
			print('No')
		t -= 1
except:
	pass


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	sum = 0
	ev = 0
	od = 0
	for num in a:
		sum += num
		if num % 2 == 0:
			ev += 1
		else:
			od += 1
	if od >= 1 and (not (x == n and od % 2 == 0)) and (not (od == n and x % 2 == 0)):
		print('Yes')
	else:
		print('No')


import math
t = int(input())
for _ in range(t):
	(n, x) = [int(r) for r in input().split()]
	a = [int(r) for r in input().split()]
	(e, o) = (0, 0)
	for l in a:
		if l % 2 == 0:
			e += 1
		else:
			o += 1
	f = True
	for k in range(x + 1):
		if e >= k and o >= x - k and ((k * 2 + x - k) % 2 == 1):
			print('Yes')
			f = False
			break
	if f:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(e, o) = (0, 0)
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	flag = False
	for i in range(1, x + 1, 2):
		if i <= o and x - i <= e:
			flag = True
			break
	if flag == True:
		print('Yes')
	else:
		print('No')


t = int(input())
c = []
for i in range(t):
	(n, x) = input().split()
	(n, x) = (int(n), int(x))
	a = [int(i) for i in input().split()]
	odd = 0
	even = 0
	for d in a:
		if d % 2 == 0:
			even += 1
		else:
			odd += 1
	if even == 0:
		if x % 2 != 0 and odd >= x:
			c.append('Yes')
		else:
			c.append('No')
	elif odd == 0:
		c.append('No')
	elif odd % 2 == 0:
		if odd - 1 + even >= x:
			c.append('Yes')
		else:
			c.append('No')
	elif odd + even >= x:
		c.append('Yes')
	else:
		c.append('No')
for k in c:
	print(k)


from sys import stdin
for _ in range(int(stdin.readline())):
	(n, x) = list(map(int, stdin.readline().split()))
	a = list(map(int, stdin.readline().split()))
	odd = even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if x == n:
		if odd % 2 == 0:
			print('no')
		else:
			print('yes')
	elif odd > 0 and even > 0:
		print('yes')
	elif even == 0 and x % 2 == 1:
		print('yes')
	else:
		print('no')


for tc in range(int(input())):
	(n, x) = list(map(int, input().split()))
	l = list(map(int, input().split()))
	(no, ne) = (0, 0)
	for i in l:
		if i % 2:
			no += 1
		else:
			ne += 1
	flag = False
	for i in range(1, 1 + min(x, no), 2):
		have = ne
		need = x - i
		if have >= need:
			flag = True
			break
	if flag:
		print('Yes')
	else:
		print('No')


def task_A():
	n = int(input())
	for _ in range(n):
		(len_array, exp_count) = map(int, input().split())
		even_count = 0
		odd_count = 0
		numbers = [int(n) for n in input().split()]
		for i in range(len_array):
			curr = numbers[i]
			if curr % 2:
				odd_count += 1
			else:
				even_count += 1
		if odd_count == 0:
			print('No')
		else:
			x_even = max(exp_count - odd_count + (odd_count + 1) % 2, 0)
			if x_even == 0:
				x_even = (exp_count + 1) % 2
			if even_count >= x_even:
				print('Yes')
			else:
				print('No')

def main():
	task_A()
main()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in a:
		if i % 2:
			o += 1
	e = n - o
	if o == 0:
		print('nO')
	elif e == 0:
		if x % 2:
			print('yeS')
		else:
			print('nO')
	elif x == n:
		if o % 2:
			print('yEs')
		else:
			print('nO')
	else:
		print('yes')


from sys import stdin, stdout
import math, sys
from itertools import permutations, combinations
from collections import defaultdict, deque, OrderedDict
from os import path
import bisect as bi
import heapq

def yes():
	print('YES')

def no():
	print('NO')
if path.exists('input.txt'):
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')

	def I():
		return int(input())

	def In():
		return map(int, input().split())
else:

	def I():
		return int(stdin.readline())

	def In():
		return map(int, stdin.readline().split())

def dict(a):
	d = {}
	for x in a:
		if d.get(x, -1) != -1:
			d[x] += 1
		else:
			d[x] = 1
	return d

def find_gt(a, x):
	i = bi.bisect_right(a, x)
	if i != len(a):
		return i
	else:
		return -1

def main():
	try:
		(n, x) = In()
		l = list(In())
		odd = 0
		for i in l:
			if i & 1 == 1:
				odd += 1
		eve = n - odd
		if n == x:
			if odd & 1 == 1:
				yes()
			else:
				no()
		elif x & 1 == 1:
			if odd >= 1:
				yes()
			else:
				no()
		elif eve >= 1 and odd >= 1:
			yes()
		else:
			no()
	except:
		pass
M = 998244353
P = 1000000007
for _ in range(I()):
	main()


for p in range(int(input())):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	arr = input().split()
	arr = list(map(int, arr))
	o = 0
	for d in arr:
		if d % 2 == 1:
			o += 1
	if o == 0:
		print('No')
	elif n == x:
		if o % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif n == o:
		if x % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		print('Yes')


if 1 % 2 == 0:
	print('True')
from itertools import combinations

def function(n, arr, x):
	if len(arr) == 1:
		if arr[0] % 2 == 0:
			return 'NO'
		else:
			return 'YES'
	odd_count = 0
	even_count = 0
	for i in arr:
		if i % 2 == 0:
			even_count += 1
		if i % 2 != 0:
			odd_count += 1
	if x % 2 != 0:
		if odd_count >= x:
			return 'YES'
	if odd_count > 0 and even_count > 0:
		for j in range(1, odd_count + 1, 2):
			for k in range(1, even_count + 1):
				total = j + k
				if total >= x:
					return 'YES'
	return 'NO'
t = int(input())
for k1 in range(t):
	(n, x) = map(int, input().rstrip().split())
	arr = list(map(int, input().rstrip().split()))
	print(function(n, arr, x))


t = int(input())
for testcase in range(t):
	(n, x) = map(int, input().split())
	an = list(map(int, input().split()))
	even = sum(map(lambda x: x % 2 == 0, an))
	odd = n - even
	if odd > 0 and x > 0:
		odd -= 1
		x -= 1
	else:
		print('No')
		continue
	while x > 0:
		if x >= 2 and odd >= 2:
			odd -= 2
			x -= 2
		elif x >= 1 and even >= 1:
			even -= 1
			x -= 1
		else:
			break
	print('Yes' if x == 0 else 'No')


t = int(input())
while t != 0:
	t = t - 1
	(n, x) = [int(x) for x in input().split()]
	arr = list(map(int, input().strip().split()))[:n]
	e = 0
	o = 0
	for i in range(0, n):
		if arr[i] % 2 == 0:
			e = e + 1
		else:
			o = o + 1
	ne = 0
	no = 0
	flag = 1
	if x % 2 == 0:
		for i in range(1, x, 2):
			ne = i
			no = x - ne
			if no <= o and ne <= e:
				flag = 0
				print('Yes')
				break
	else:
		for i in range(0, x, 2):
			ne = i
			no = x - ne
			if no <= o and ne <= e:
				print('Yes')
				flag = 0
				break
	if flag == 1:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	even = [y for y in arr if y % 2 == 0]
	odd = [z for z in arr if z % 2 != 0]
	if n == x and len(odd) % 2 != 0:
		print('Yes')
	elif len(odd) == 0:
		print('No')
	elif len(even) == 0:
		if x % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif len(even) >= x:
		print('Yes')
	elif len(odd) > x - len(even):
		print('Yes')
	else:
		print('No')


t = int(input())
for i in range(t):
	l1 = input()
	l = l1.split()
	n = int(l[0])
	x = int(l[1])
	a = input().split()
	a = list(map(int, a))
	for j in range(n):
		if a[j] % 2 != 0:
			a[j] = 'y'
	p = a.count('y')
	q = len(a) - p
	if p:
		if p > x:
			if q == 0 and x % 2 == 0:
				print('NO')
			else:
				print('YES')
		elif p <= x and p % 2 != 0:
			print('YES')
		elif p == x and p < len(a):
			print('YES')
		elif p <= x and p % 2 == 0 and (q + (p - 1) >= x):
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	s = map(int, input().split())
	odd = 0
	for x in s:
		if x % 2 == 1:
			odd += 1
	if odd == 0:
		print('no')
		continue
	even = n - odd
	odd -= 1
	k -= 1
	odd = odd >> 1 << 1
	if odd >= k:
		k %= 2
	else:
		k -= odd
	if even < k:
		print('no')
	else:
		print('yes')


import math

def solution(n, x, A):
	num_odd = 0
	num_even = 0
	for a in A:
		if a % 2 == 0:
			num_even += 1
		else:
			num_odd += 1
	if num_odd == 0:
		return 'No'
	if num_odd - (num_odd % 2 == 0) + num_even >= x:
		if num_even == 0 and (num_odd - (num_odd % 2 == 0) + num_even) % 2 != x % 2:
			return 'No'
		else:
			return 'Yes'
	return 'No'
t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split(' '))
	A = list(map(int, input().split(' ')))
	print(solution(n, x, A))


T = int(input())

def solve():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	if n == x:
		if sum(a) & 1 == 1:
			print('Yes')
		else:
			print('No')
		return
	odd = 0
	for num in a:
		if num & 1 == 1:
			odd += 1
	even = n - odd
	if odd == 0:
		print('No')
		return
	if x >= odd:
		if odd & 1 == 0:
			x -= odd - 1
		else:
			x -= odd
	elif x % 2 == 0:
		x = 1
	else:
		print('Yes')
		return
	if even >= x:
		print('Yes')
	else:
		print('No')
for _ in range(T):
	solve()


for _ in range(int(input())):
	(x, n) = map(int, input().split())
	(l, ls) = ([], [])
	lst = list(map(int, input().split()))
	for i in lst:
		if i % 2 == 0:
			l.append(i)
		else:
			ls.append(i)
	if len(ls) % 2 == 0 and x == n or len(ls) == 0:
		print('NO')
	elif len(l) == 0 and n % 2 == 0:
		print('NO')
	else:
		print('YES')


import os
import sys
from io import BytesIO, IOBase
import math
from itertools import permutations
from decimal import Decimal, getcontext
getcontext().prec = 25
MOD = pow(10, 9) + 7
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
for _ in range(int(input())):
	(n, k) = map(int, input().split(' '))
	l = list(map(int, input().split(' ')))
	ce = co = 0
	for i in range(n):
		if l[i] % 2:
			co += 1
		else:
			ce += 1
	if co == 0 or (k % 2 == 0 and (not ce)):
		print('NO')
	elif co > max(0, k - ce):
		print('YES')
	elif co == k - ce:
		if co % 2:
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


from sys import stdin as cin
lmap = lambda f, v: list(map(f, v))

def can_find_odd_sum(x, a):
	odds = sum((i % 2 for i in a))
	evens = len(a) - odds
	if odds < 1:
		return False
	x -= 1
	odds -= 1
	n = odds // 2 * 2 + evens
	return x <= n and (x % 2 == 0 or evens > 0)

def main():
	t = int(next(cin).strip())
	for i in range(t):
		(n, x) = lmap(int, next(cin).strip().split())
		a = lmap(int, next(cin).strip().split())
		print('Yes' if can_find_odd_sum(x, a) else 'No')
main()


def odd_sum(a, x):
	o = 0
	e = 0
	for i in a:
		if i % 2 != 0:
			o += 1
		else:
			e += 1
	if o == 0:
		return 'No'
	if x % 2 == 1:
		if o >= x:
			return 'Yes'
		elif o % 2 == 0:
			if x - o + 1 <= e:
				return 'Yes'
			else:
				return 'No'
		elif x - o <= e:
			return 'Yes'
		else:
			return 'No'
	elif o >= x - 1:
		if e >= 1:
			return 'Yes'
		else:
			return 'No'
	elif o % 2 != 0:
		if o + e >= x:
			return 'Yes'
		else:
			return 'No'
	elif o + e - 1 >= x:
		return 'Yes'
	else:
		return 'No'
	return 'No'
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	res = odd_sum(a, x)
	print(res)


from collections import *
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = [*map(int, input().split())]
	for i in range(n):
		l[i] = l[i] % 2
	dic = Counter(l)
	if dic.get(1, 0) == 0:
		dic[1] = 0
	if dic.get(0, 0) == 0:
		dic[0] = 0
	if x % 2 == 0:
		one = dic[1]
		if one > 0 and one % 2 == 0:
			one -= 1
		if one > 0 and dic[0] > 0 and (one + dic[0] >= x):
			print('Yes')
		else:
			print('No')
	elif dic[1] >= x:
		print('Yes')
	else:
		if dic[1] > 0 and dic[1] % 2 == 0:
			dic[1] -= 1
		if dic[1] > 0 and dic[1] + dic[0] >= x:
			print('Yes')
		else:
			print('No')


def select_odd(nums, x):
	even = len(tuple(filter(lambda x: x % 2 == 0, nums)))
	odd = len(tuple(filter(lambda x: x % 2 != 0, nums)))
	if odd == 0:
		return 'No'
	if even == 0 and x % 2 == 0:
		return 'No'
	if odd % 2 == 0:
		odd -= 1
	if even <= x:
		x = x - even
	else:
		x = 1
	if x <= odd:
		return 'Yes'
	else:
		return 'No'
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	nums = [int(data) for data in input().split()]
	print(select_odd(nums, x))


from sys import stdin, stdout
from math import sin, pi, tan
for test in range(int(stdin.readline())):
	arr1 = [int(x) for x in stdin.readline().split()]
	n = arr1[0]
	x = arr1[1]
	arr = [int(x) for x in stdin.readline().split()]
	odd = 0
	for i in arr:
		if i % 2 == 1:
			odd = odd + 1
	if n > x:
		if odd == 0:
			stdout.write('NO\n')
		elif odd == n:
			if x % 2 == 1:
				stdout.write('YES\n')
			else:
				stdout.write('NO\n')
		else:
			stdout.write('YES\n')
	elif odd == 0:
		stdout.write('NO\n')
	elif odd == n:
		if x % 2 == 1:
			stdout.write('YES\n')
		else:
			stdout.write('NO\n')
	elif odd % 2 == 1:
		stdout.write('YES\n')
	else:
		stdout.write('NO\n')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	m = list(map(int, input().split()))
	(ev, od) = (0, 0)
	for i in m:
		if i % 2:
			od += 1
		else:
			ev += 1
	if od == 0 or (x % 2 == 0 and ev == 0):
		print('NO')
		continue
	if od % 2 == 0:
		od -= 1
	if x % 2 == 0 and ev != 0:
		x -= 1
		ev -= 1
	if x > od:
		x -= od
		if x > ev:
			print('NO')
		else:
			print('YES')
	else:
		print('YES')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	(odd, even) = (0, 0)
	for i in list(map(int, input().split())):
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = False
	for i in range(1, odd + 1, 2):
		if 0 <= x - i <= even:
			print('YES')
			flag = True
			break
	if not flag:
		print('NO')


import sys
_INPUT_LINES = sys.stdin.read().splitlines()
input = iter(_INPUT_LINES).__next__
tc = int(input())
for zzz in range(tc):
	(n, k) = map(int, input().split())
	a = b = 0
	arr = list(map(int, input().split()))
	for ele in arr:
		if ele % 2 == 0:
			b += 1
		else:
			a += 1
	can = False
	for i in range(1, a + 1, 2):
		r = k - i
		if -1 < r and r <= b:
			can = True
			break
	if can:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	ans = 'No'
	(n, x) = map(int, input().split())
	a = [int(i) % 2 for i in input().split()]
	cnt = [0, 0]
	for i in a:
		cnt[i] += 1
	s = min(x, cnt[1])
	if s == x and s % 2 == 0:
		if cnt[0] > 0:
			ans = 'Yes'
	if s < x and s % 2 == 0:
		if cnt[0] >= x - s + 1:
			ans = 'Yes'
	if s % 2 != 0:
		ans = 'Yes'
	if s == 0:
		ans = 'No'
	print(ans)


t = int(input())
while t != 0:
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()[:n]))
	s = 0
	for i in range(0, len(l)):
		if l[i] % 2 != 0:
			s = s + 1
	if s == 0 or (n == x and s % 2 == 0) or (s == n and x % 2 == 0):
		print('NO')
	else:
		print('YES')
	t = t - 1


x = int(input())
for i in range(x):
	(a, b) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = even = 0
	for i in range(a):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	f = 1
	y = 0
	while f == 1:
		if odd >= 1 + y and even >= b - 1 - y and (even > 0 or b % 2 == 1):
			f = 0
		elif y > a:
			f = 2
		else:
			y += 2
	if f == 0:
		print('Yes')
	elif f == 2:
		print('No')


import sys, math, cmath, time
start_time = time.time()

def solve():
	(n, x) = invr()
	a = inlt()
	q = 0
	w = 0
	for i in range(len(a)):
		if a[i] % 2 == 0:
			q = q + 1
		else:
			w = w + 1
	if x % 2 == 0 and q >= 1 and (w >= 1) and (q - 1 >= x - (w - 2 + w % 2) - 2) or (x % 2 != 0 and w >= 1 and (q >= x - (w - 2 + w % 2) - 1)):
		print('Yes')
	else:
		print('No')

def main():
	global tt
	if not ONLINE_JUDGE:
		sys.stdin = open('input.txt', 'r')
		sys.stdout = open('output.txt', 'w')
	t = 1
	t = inp()
	for tt in range(t):
		solve()
	if not ONLINE_JUDGE:
		print('Time Elapsed :', time.time() - start_time, 'seconds')
		sys.stdout.close()

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	return input().strip()

def invr():
	return map(int, input().split())

def counter(a):
	q = [0] * max(a)
	for i in range(len(a)):
		q[a[i] - 1] = q[a[i] - 1] + 1
	return q

def counter_elements(a):
	q = dict()
	for i in range(len(a)):
		if a[i] not in q:
			q[a[i]] = 0
		q[a[i]] = q[a[i]] + 1
	return q

def string_counter(a):
	q = [0] * 26
	for i in range(len(a)):
		q[ord(a[i]) - 97] = (q[ord(a[i]) - 97], 1)
	return q

def factors(n):
	q = []
	for i in range(1, int(n ** 0.5) + 1):
		if n % i == 0:
			q.append(i)
			q.append(n // i)
	return list(sorted(list(set(q))))

def prime_factors(n):
	q = []
	while n % 2 == 0:
		q.append(2)
		n = n // 2
	for i in range(3, int(n ** 0.5) + 1, 2):
		while n % i == 0:
			q.append(i)
			n = n // i
	if n > 2:
		q.append(n)
	return list(sorted(q))

def transpose(a):
	b = [[0] * n for i in range(n)]
	for i in range(len(a)):
		for j in range(len(a)):
			b[i][j] = a[j][i]
	return b
ONLINE_JUDGE = __debug__
if ONLINE_JUDGE:
	input = sys.stdin.readline
main()


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
t = inp()
answer_list = []
for i in range(t):
	[n, x] = inlt()
	alist = inlt()
	odd_list = [m for m in alist if m % 2 == 1]
	even_list = [m for m in alist if m % 2 == 0]
	odd_count_all = len(odd_list)
	even_count_all = len(even_list)
	answer = 'No'
	for odd_count in range(1, odd_count_all + 1, 2):
		even_count = x - odd_count
		if even_count <= even_count_all and even_count >= 0:
			answer = 'Yes'
			break
	answer_list.append(answer)
for a in answer_list:
	print(a)


import queue
import math
t = int(input())
while t:
	line = input().split()
	(n, x) = (int(line[0]), int(line[1]))
	a = input().split()
	a = [int(x) for x in a]
	(odd, even) = (0, 0)
	for y in a:
		odd += y % 2
		even += 1 - y % 2
	flag = False
	for i in range(1, min(x + 1, odd + 1), 2):
		if even >= x - i:
			flag = True
			break
	if flag:
		print('Yes')
	else:
		print('No')
	t -= 1


def calc(k, t0, t1):
	if t1 == 0:
		return 'No'
	if t0 == 0 and k % 2 == 0:
		return 'No'
	t1 -= 1
	k -= 1
	if t1 // 2 * 2 >= k:
		return 'Yes'
	k -= t1 // 2 * 2
	t1 %= 2
	return 'Yes' if k <= t0 else 'No'
t = int(input())
for i in range(t):
	(n, k) = [int(i) for i in input().split()]
	a = [int(i) for i in input().split()]
	t0 = len([i for i in a if i % 2 == 0])
	t1 = len([i for i in a if i % 2 == 1])
	print(calc(k, t0, t1))


def task(n, x, a):
	odds = 0
	evens = 0
	for value in a:
		if value % 2 == 0:
			evens += 1
		else:
			odds += 1
	if odds == 0:
		print('No')
		return
	if evens == 0:
		if x % 2 == 1:
			print('Yes')
			return
		else:
			print('No')
			return
	if x < evens + odds:
		print('Yes')
		return
	elif odds % 2 == 1:
		print('Yes')
		return
	else:
		print('No')
		return
t = int(input())
for i in range(0, t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	task(n, x, a)


def main():
	for _ in range(int(input())):
		(n, x) = map(int, input().split())
		s = sum((ord(s[-1]) & 1 for s in input().split()))
		print(('Yes', 'No')[s == n and (not x & 1) or not s or (not s & 1 and x == n)])
main()


from sys import maxsize, stdout, stdin, stderr
mod = int(1000000000.0 + 7)

def I():
	return int(stdin.readline())

def lint():
	return [int(x) for x in stdin.readline().split()]

def S():
	return input().strip()

def grid(r, c):
	return [lint() for i in range(r)]
from collections import defaultdict
import math
t = I()
for _ in range(t):
	(n, x) = lint()
	s = lint()
	e = 0
	o = 0
	ans = True
	for i in range(n):
		if s[i] % 2 == 0:
			e += 1
		else:
			o += 1
	if e == 0 and x % 2 == 0:
		ans = False
	elif o == 0:
		ans = False
	else:
		if o % 2 != 0:
			x -= o
			o = 0
		else:
			x -= o - 1
			o = 0
		if x > e and x > 0:
			ans = False
	if ans:
		print('Yes')
	else:
		print('No')


t = int(input())
for q in range(t):
	(n, x) = list(map(int, input().split(' ')))
	entrada = list(map(int, input().split(' ')))
	pares = 0
	impares = 0
	for k in range(n):
		if entrada[k] % 2 == 0:
			pares += 1
		else:
			impares += 1
	if pares == 0 and x % 2 == 0:
		print('No')
	elif impares == 0:
		print('No')
	elif impares % 2 == 1 and pares + impares >= x:
		print('Yes')
	elif impares % 2 == 0 and impares - 1 + pares >= x:
		print('Yes')
	else:
		print('No')


T = int(input())
for t in range(T):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	nodds = sum([k % 2 for k in arr])
	nevens = n - nodds
	if nodds == 0:
		print('No')
		continue
	nodds -= 1
	x -= 1
	evodds = nodds // 2
	x = max(x % 2, x - evodds * 2)
	if nevens >= x:
		print('Yes')
	else:
		print('No')


t = int(input())
if 1 <= t <= 100:
	for i in range(t):
		(n, x) = list(map(int, input().split(' ')))
		if 1 <= x <= n <= 1000:
			no = 0
			ne = 0
			a = list(map(int, input().strip().split(' ')))[:n]
			for i in a:
				if i % 2 == 0:
					ne += 1
				else:
					no += 1
			if no == 0:
				print('No')
			elif ne == 0 and x % 2 == 0:
				print('No')
			elif ne == 0 and x % 2 != 0:
				print('Yes')
			elif x == n and no % 2 == 0:
				print('No')
			elif ne == no and no % 2 != 0:
				print('Yes')
			else:
				print('Yes')


t = int(input())
for i in range(0, t):
	(n, x) = map(int, input().split())
	li = list(map(int, input().split()))
	if n == 1 and x == 1:
		if li[0] % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif n == x:
		t = 0
		for j in li:
			t += j
		if t % 2 == 1:
			print('Yes')
		else:
			print('No')
	else:
		lo = []
		le = []
		for j in li:
			if j % 2 == 0:
				le.append(j)
			else:
				lo.append(j)
			if len(le) != 0 and len(lo) != 0:
				break
		if len(le) == 0:
			if x % 2 == 1:
				print('Yes')
			else:
				print('No')
		elif len(lo) == 0:
			print('No')
		else:
			print('Yes')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	al = list(map(int, input().split()))
	ec = 0
	oc = 0
	for i in range(len(al)):
		if al[i] % 2 == 0:
			ec += 1
		else:
			oc += 1
	if oc == 0:
		print('No')
		continue
	if x % 2 == 1:
		if oc % 2 == 1:
			print('Yes')
			continue
		else:
			left = x - oc + 1
			if ec >= left:
				print('Yes')
				continue
			else:
				print('No')
				continue
	else:
		if oc % 2 == 0:
			oc -= 1
		if oc % 2 == 1:
			if oc >= x:
				left = 1
				if ec >= 1:
					print('Yes')
					continue
				else:
					print('No')
					continue
			else:
				left = x - oc
				if ec >= left:
					print('Yes')
					continue
				else:
					print('No')
					continue


for _ in range(int(input())):
	(n, x) = list(map(int, input().split()))
	arr = list(map(int, input().split()))
	e = 0
	for i in arr:
		if i % 2 == 0:
			e += 1
	o = n - e
	if x % 2 != 0:
		f = 0
		y = min(e, x) + 1
		for i in range(0, y, 2):
			val1 = i
			val2 = x - i
			if o >= val2:
				f = 1
				break
		if f == 1:
			print('Yes')
		else:
			print('No')
	else:
		f = 0
		y = min(e, x) + 1
		for i in range(1, y, 2):
			val1 = i
			val2 = x - i
			if o >= val2:
				f = 1
				break
		if f == 1:
			print('Yes')
		else:
			print('NO')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = [int(int(x) % 2) for x in input().split()]
	p = a.count(0)
	q = n - p
	if p == 0:
		if x % 2 == 0:
			print('NO')
		else:
			print('YES')
	elif x % 2 == 0:
		if 1 in a:
			if p >= x:
				print('YES')
			elif p % 2 == 0:
				if q >= x - p + 1:
					print('YES')
				else:
					print('NO')
			elif q >= x - p:
				print('YES')
			else:
				print('NO')
		else:
			print('NO')
	elif 1 in a:
		if p >= x:
			print('YES')
		elif p % 2 == 0:
			if q >= x - p:
				print('YES')
			else:
				print('NO')
		elif q >= x - p + 1:
			print('YES')
		else:
			print('NO')
	else:
		print('NO')


from math import inf as inf
from math import *
from collections import *
import sys
input = sys.stdin.readline
t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0:
		print('No')
		continue
	if o % 2 == 0:
		o = min(o - 1, x)
		if o % 2 == 0:
			o -= 1
	if o > x:
		if x % 2:
			o = x
		else:
			o = x - 1
	if o >= x and x % 2:
		print('Yes')
	elif e >= x - o:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	possible = False
	even_count = 0
	odd_count = 0
	(n, k) = map(int, input().split())
	arr = [int(i) for i in input().split()]
	for i in range(n):
		if arr[i] % 2 == 0:
			even_count += 1
		else:
			odd_count += 1
	i = 1
	while i <= odd_count and i <= k:
		have = even_count
		need = k - i
		if need <= even_count:
			possible = True
		i = i + 2
	if possible == True:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	l = [int(x) for x in input().split()]
	o = 0
	for i in range(len(l)):
		if l[i] % 2 != 0:
			o += 1
	m = len(l) - o
	if o == 0:
		print('No')
		continue
	if o == k:
		if o % 2 != 0:
			print('Yes')
		elif o % 2 == 0 and m >= 1:
			print('Yes')
		else:
			print('No')
	elif o < k:
		if o % 2 != 0 and k - o <= m:
			print('Yes')
		elif o % 2 == 0 and k - o + 1 <= m:
			print('Yes')
		else:
			print('No')
	elif k % 2:
		print('Yes')
	elif m >= 1:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	ev = 0
	od = 0
	ex = list(map(int, input().split()))
	for i in range(n):
		if ex[i] % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0 or (ev == 0 and x % 2 == 0):
		print('NO')
	elif ev == 0 and x % 2 == 1:
		print('YES')
	elif od % 2 == 1:
		print('YES')
	else:
		cnt = od - 1 + ev
		if cnt >= x:
			print('YES')
		else:
			print('NO')


t = int(input())
for i in range(t):
	(n, x) = input().split()
	n = int(n)
	x = int(x)
	lista = input().split()
	A = 0
	P = 0
	for j in lista:
		if int(j) % 2 == 0:
			A += 1
		else:
			P += 1
	if P % 2 == 0 and P != 0 and (P - 1 + A >= x) and (A != 0):
		print('Yes')
	elif P % 2 == 1 and P + A >= x and (A != 0):
		print('Yes')
	elif A == 0 and P >= x and (x % 2 == 1):
		print('Yes')
	else:
		print('No')


def main():
	t = int(input())
	for _ in range(t):
		(n, x) = map(int, input().split())
		a = list(map(int, input().split()))
		odd = 0
		for i in a:
			if i % 2 != 0:
				odd += 1
		if x == n:
			if odd % 2 == 0:
				print('NO')
			else:
				print('YES')
		elif odd == n and x % 2 == 0:
			print('NO')
		elif odd > 0:
			print('YES')
		else:
			print('NO')
main()


tc = int(input())
alls = []
alln = []
for i in range(tc):
	s = input()
	s = [int(x) for x in s.split()]
	alls.append(s)
	n = input()
	n = [int(x) for x in n.split()]
	alln.append(n)
odd = []
even = []
for i in range(len(alln)):
	for j in range(len(alln[i])):
		if alln[i][j] % 2 == 0:
			even.append(alln[i][j])
		else:
			odd.append(alln[i][j])
	if alls[i][1] == 1 and len(odd) != 0:
		print('Yes')
	elif alls[i][1] == 1 and len(odd) == 0:
		print('No')
	elif alls[i][1] == alls[i][0]:
		if len(odd) % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif alls[i][1] != alls[i][0]:
		if len(even) == 0:
			if alls[i][1] % 2 != 0:
				print('Yes')
			else:
				print('No')
		elif len(odd) == 0:
			print('No')
		elif len(odd) != 0 and len(even) != 0:
			print('Yes')
	even = []
	odd = []


t = int(input())
for _ in range(t):
	(n, x) = list(map(int, input().strip().split()))
	list1 = list(map(int, input().strip().split()))
	even = 0
	odd = 0
	for value in list1:
		if value % 2 == 0:
			even += 1
		else:
			odd += 1
	b = 0
	for i in range(1, odd + 1, 2):
		temp = x - i
		if temp >= 0 and temp <= even:
			b = 1
			break
	if b:
		print('Yes')
	else:
		print('No')


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = [int(k) for k in input().split()]
	od = 0
	ev = 0
	if x > len(a):
		print('No')
		continue
	for i in a:
		if i % 2 == 0:
			ev += 1
		else:
			od += 1
	if od == 0:
		print('No')
		continue
	if ev == 0 and x % 2 == 0:
		print('No')
		continue
	if od % 2 == 0:
		od -= 1
	if x > 0 and x <= od + ev:
		print('Yes')
	else:
		print('No')


import os
import sys
import math
from io import BytesIO, IOBase
from fractions import Fraction
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
import os
import sys
import math
from io import BytesIO, IOBase
from fractions import Fraction

class Factorial:

	def _init_(self, MOD):
		self.MOD = MOD
		self.factorials = [1, 1]
		self.invModulos = [0, 1]
		self.invFactorial_ = [1, 1]

	def calc(self, n):
		if n <= -1:
			print('Invalid argument to calculate n!')
			print('n must be non-negative value. But the argument was ' + str(n))
			exit()
		if n < len(self.factorials):
			return self.factorials[n]
		nextArr = [0] * (n + 1 - len(self.factorials))
		initialI = len(self.factorials)
		prev = self.factorials[-1]
		m = self.MOD
		for i in range(initialI, n + 1):
			prev = nextArr[i - initialI] = prev * i % m
		self.factorials += nextArr
		return self.factorials[n]

	def inv(self, n):
		if n <= -1:
			print('Invalid argument to calculate n^(-1)')
			print('n must be non-negative value. But the argument was ' + str(n))
			exit()
		p = self.MOD
		pi = n % p
		if pi < len(self.invModulos):
			return self.invModulos[pi]
		nextArr = [0] * (n + 1 - len(self.invModulos))
		initialI = len(self.invModulos)
		for i in range(initialI, min(p, n + 1)):
			next = -self.invModulos[p % i] * (p // i) % p
			self.invModulos.append(next)
		return self.invModulos[pi]

	def invFactorial(self, n):
		if n <= -1:
			print('Invalid argument to calculate (n^(-1))!')
			print('n must be non-negative value. But the argument was ' + str(n))
			exit()
		if n < len(self.invFactorial_):
			return self.invFactorial_[n]
		self.inv(n)
		nextArr = [0] * (n + 1 - len(self.invFactorial_))
		initialI = len(self.invFactorial_)
		prev = self.invFactorial_[-1]
		p = self.MOD
		for i in range(initialI, n + 1):
			prev = nextArr[i - initialI] = prev * self.invModulos[i % p] % p
		self.invFactorial_ += nextArr
		return self.invFactorial_[n]

class Combination:

	def _init_(self, MOD):
		self.MOD = MOD
		self.factorial = Factorial(MOD)

	def ncr(self, n, k):
		if k < 0 or n < k:
			return 0
		k = min(k, n - k)
		f = self.factorial
		return f.calc(n) * f.invFactorial(max(n - k, k)) * f.invFactorial(min(k, n - k)) % self.MOD
for t in range(int(input())):
	(nos, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 1:
		odd -= 1
	elif x % 2 == 0:
		odd -= 1
		even -= 1
	if even < 0 or odd < 0:
		print('No')
		continue
	even //= 2
	odd //= 2
	if even + odd >= (x - 2 + x % 2) // 2:
		print('Yes')
	else:
		print('No')


def main():
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	odd_count = sum([1 if ai % 2 else 0 for ai in a])
	if odd_count == 0:
		print('No')
		return
	if not x % 2 and odd_count == n:
		print('No')
		return
	if n == x:
		if not odd_count % 2:
			print('No')
			return
	print('Yes')
for _ in range(int(input())):
	main()


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlist():
	return list(map(int, input().split()))

def instr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
t = inp()
for i in range(t):
	(n, x) = invr()
	a = inlist()
	(odd, even) = (0, 0)
	for j in range(n):
		if a[j] % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if x == n and odd % 2 == 0:
		print('No\n')
	elif x % 2 == 1 and odd > 0:
		print('Yes\n')
	elif x % 2 == 0 and odd > 0 and (even > 0):
		print('Yes\n')
	else:
		print('No\n')


n = int(input())
answers = [] * 0
for i in range(n):
	zzz = input()
	(xxx, yyy) = zzz.split(' ')
	numbers = input().split(' ')
	oddcount = 0
	evencount = 0
	for number in numbers:
		if int(number) % 2 == 1:
			oddcount += 1
		else:
			evencount += 1
	if oddcount > 0:
		if oddcount % 2 == 1:
			possible = oddcount + evencount
		else:
			possible = oddcount + evencount - 1
	else:
		possible = 0
	if int(yyy) > 0 and int(yyy) <= possible:
		if evencount > 0 or int(yyy) % 2 == 1:
			answers.append('Yes')
		else:
			answers.append('No')
	else:
		answers.append('No')
for answer in answers:
	print(answer)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	ones = 0
	zero = 0
	for i in range(n):
		if a[i] % 2:
			ones += 1
		else:
			zero += 1
	can = False
	for i in range(1, ones + 1, 2):
		if x - i < 0:
			continue
		if zero - (x - i) >= 0:
			print('Yes')
			can = True
			break
	if not can:
		print('No')


import sys, bisect, string, math, time, functools, random, fractions
from heapq import heappush, heappop, heapify
from collections import deque, defaultdict, Counter
from itertools import permutations, combinations, groupby
rep = range

def Golf():
	(n, *t) = map(int, open(0).read().split())

def I():
	return int(input())

def S_():
	return input()

def IS():
	return input().split()

def LS():
	return [i for i in input().split()]

def LI():
	return [int(i) for i in input().split()]

def LI_():
	return [int(i) - 1 for i in input().split()]

def NI(n):
	return [int(input()) for i in range(n)]

def NI_(n):
	return [int(input()) - 1 for i in range(n)]

def StoLI():
	return [ord(i) - 97 for i in input()]

def ItoS(n):
	return chr(n + 97)

def LtoS(ls):
	return ''.join([chr(i + 97) for i in ls])

def RA():
	return map(int, open(0).read().split())

def GI(V, E, ls=None, Directed=False, index=1):
	org_inp = []
	g = [[] for i in range(V)]
	FromStdin = True if ls == None else False
	for i in range(E):
		if FromStdin:
			inp = LI()
			org_inp.append(inp)
		else:
			inp = ls[i]
		if len(inp) == 2:
			(a, b) = inp
			c = 1
		else:
			(a, b, c) = inp
		if index == 1:
			a -= 1
			b -= 1
		aa = (a, c)
		bb = (b, c)
		g[a].append(bb)
		if not Directed:
			g[b].append(aa)
	return (g, org_inp)

def GGI(h, w, search=None, replacement_of_found='.', mp_def={'#': 1, '.': 0}, boundary=1):
	mp = [boundary] * (w + 2)
	found = {}
	for i in range(h):
		s = input()
		for char in search:
			if char in s:
				found[char] = (i + 1) * (w + 2) + s.index(char) + 1
				mp_def[char] = mp_def[replacement_of_found]
		mp += [boundary] + [mp_def[j] for j in s] + [boundary]
	mp += [boundary] * (w + 2)
	return (h + 2, w + 2, mp, found)

def TI(n):
	return GI(n, n - 1)

def accum(ls):
	rt = [0]
	for i in ls:
		rt += [rt[-1] + i]
	return rt

def bit_combination(n, base=2):
	rt = []
	for tb in range(base ** n):
		s = [tb // base ** bt % base for bt in range(n)]
		rt += [s]
	return rt

def gcd(x, y):
	if y == 0:
		return x
	if x % y == 0:
		return y
	while x % y != 0:
		(x, y) = (y, x % y)
	return y

def show(*inp, end='\n'):
	if show_flg:
		print(*inp, end=end)
YN = ['YES', 'NO']
Yn = ['Yes', 'No']
mo = 10 ** 9 + 7
inf = float('inf')
FourNb = [(-1, 0), (1, 0), (0, 1), (0, -1)]
EightNb = [(-1, 0), (1, 0), (0, 1), (0, -1), (1, 1), (-1, -1), (1, -1), (-1, 1)]
compas = dict(zip('WENS', FourNb))
cursol = dict(zip('LRUD', FourNb))
l_alp = string.ascii_lowercase
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
input = lambda : sys.stdin.readline().rstrip()

class Tree:

	def __init__(self, inp_size=None, ls=None, init=True, index=0):
		self.LCA_init_stat = False
		self.ETtable = []
		if init:
			if ls == None:
				self.stdin(inp_size, index=index)
			else:
				self.size = len(ls) + 1
				(self.edges, _) = GI(self.size, self.size - 1, ls, index=index)
		return

	def stdin(self, inp_size=None, index=1):
		if inp_size == None:
			self.size = int(input())
		else:
			self.size = inp_size
		(self.edges, _) = GI(self.size, self.size - 1, index=index)
		return

	def listin(self, ls, index=0):
		self.size = len(ls) + 1
		(self.edges, _) = GI(self.size, self.size - 1, ls, index=index)
		return

	def __str__(self):
		return str(self.edges)

	def dfs(self, x, func=lambda prv, nx, dist: prv + dist, root_v=0):
		q = deque()
		q.append(x)
		v = [-1] * self.size
		v[x] = root_v
		while q:
			c = q.pop()
			for (nb, d) in self.edges[c]:
				if v[nb] == -1:
					q.append(nb)
					v[nb] = func(v[c], nb, d)
		return v

	def EulerTour(self, x):
		q = deque()
		q.append(x)
		self.depth = [None] * self.size
		self.depth[x] = 0
		self.ETtable = []
		self.ETdepth = []
		self.ETin = [-1] * self.size
		self.ETout = [-1] * self.size
		cnt = 0
		while q:
			c = q.pop()
			if c < 0:
				ce = ~c
			else:
				ce = c
				for (nb, d) in self.edges[ce]:
					if self.depth[nb] == None:
						q.append(~ce)
						q.append(nb)
						self.depth[nb] = self.depth[ce] + 1
			self.ETtable.append(ce)
			self.ETdepth.append(self.depth[ce])
			if self.ETin[ce] == -1:
				self.ETin[ce] = cnt
			else:
				self.ETout[ce] = cnt
			cnt += 1
		return

	def LCA_init(self, root):
		self.EulerTour(root)
		self.st = SparseTable(self.ETdepth, init_func=min, init_idl=inf)
		self.LCA_init_stat = True
		return

	def LCA(self, root, x, y):
		if self.LCA_init_stat == False:
			self.LCA_init(root)
		(xin, xout) = (self.ETin[x], self.ETout[x])
		(yin, yout) = (self.ETin[y], self.ETout[y])
		a = min(xin, yin)
		b = max(xout, yout, xin, yin)
		id_of_min_dep_in_et = self.st.query_id(a, b + 1)
		return self.ETtable[id_of_min_dep_in_et]

class SparseTable:

	def __init__(self, ls, init_func=min, init_idl=float('inf')):
		self.func = init_func
		self.idl = init_idl
		self.size = len(ls)
		self.N0 = self.size.bit_length()
		self.table = [ls[:]]
		self.index = [list(range(self.size))]
		self.lg = [0] * (self.size + 1)
		for i in range(2, self.size + 1):
			self.lg[i] = self.lg[i >> 1] + 1
		for i in range(self.N0):
			tmp = [self.func(self.table[i][j], self.table[i][min(j + (1 << i), self.size - 1)]) for j in range(self.size)]
			tmp_id = [self.index[i][j] if self.table[i][j] == self.func(self.table[i][j], self.table[i][min(j + (1 << i), self.size - 1)]) else self.index[i][min(j + (1 << i), self.size - 1)] for j in range(self.size)]
			self.table += [tmp]
			self.index += [tmp_id]

	def query(self, l, r):
		if r > self.size:
			r = self.size
		N = self.lg[r - l]
		return self.func(self.table[N][l], self.table[N][max(0, r - (1 << N))])

	def query_id(self, l, r):
		if r > self.size:
			r = self.size
		N = self.lg[r - l]
		(a, b) = (self.index[N][l], self.index[N][max(0, r - (1 << N))])
		if self.table[0][a] == self.func(self.table[N][l], self.table[N][max(0, r - (1 << N))]):
			b = a
		return b

	def right_bound(self, pos, x):
		k = (self.size - pos).bit_length()
		for j in range(k)[::-1]:
			nx = pos + (1 << j)
			if nx < n and self.query(pos, nx + 1) <= x:
				pos += 1 << j
		return pos

	def left_bound(self, pos, x):
		k = pos.bit_length()
		for j in range(k)[::-1]:
			nx = pos - (1 << j)
			if 0 <= nx and self.query(nx, pos + 1) <= x:
				pos -= 1 << j
		return pos

	def __str__(self):
		return str(self.table[0])

	def print(self):
		for i in self.table:
			print(*i)

def primeFactor(N):
	(i, n) = (2, N)
	ret = {}
	(d, sq) = (2, 99)
	while i <= sq:
		k = 0
		while n % i == 0:
			(n, k, ret[i]) = (n // i, k + 1, k + 1)
		if k > 0 or i == 97:
			sq = int(n ** (1 / 2) + 0.5)
		if i < 4:
			i = i * 2 - 1
		else:
			(i, d) = (i + d, d ^ 6)
	if n > 1:
		ret[n] = 1
	return ret

def PrimeNumSet(N):
	Max = int(N ** 0.5)
	seachList = [i for i in range(2, N + 1)]
	primeNum = []
	while seachList:
		if seachList[0] <= Max:
			break
		primeNum.append(seachList[0])
		tmp = seachList[0]
		seachList = [i for i in seachList if i % tmp != 0]
	primeNum.extend(seachList)
	return primeNum

def LCM(b, mo=10 ** 9 + 7):
	prs = PrimeNumSet(max(b))
	M = dict(zip(prs, [0] * len(prs)))
	for i in b:
		dc = primeFactor(i)
		for (j, k) in dc.items():
			M[j] = max(M[j], k)
	r = 1
	for (j, k) in M.items():
		if k != 0:
			r *= pow(j, k, mo)
			r %= mo
	return r

def topological_sort(G):
	n = len(G)
	rt = []
	indeg = [0] * n
	for i in range(n):
		for j in G[i]:
			indeg[j] += 1
	q = deque()
	for i in range(n):
		if indeg[i] == 0:
			q.append(i)
	while q:
		c = q.popleft()
		rt.append(c)
		for nb in G[c]:
			indeg[nb] -= 1
			if indeg[nb] == 0:
				q.append(nb)
	return rt
show_flg = False
show_flg = True
ans = 0
T = I()
for _ in range(T):
	ans = 0
	(n, x) = LI()
	a = LI()
	(g, k) = (0, 0)
	for i in a:
		if i % 2 == 0:
			g += 1
		else:
			k += 1
	ans = 1
	if k == 0:
		ans = 1
	else:
		for i in range(0, g + 1):
			if i > x:
				break
			if x - i <= k and (x - i) % 2 == 1:
				ans = 0
	print(Yn[ans])


import math

def inp():
	return int(input())

def inlist():
	return list(map(int, input().split()))

def instr():
	s = input()
	return list(s[:len(s)])

def invr():
	return map(int, input().split())
t = inp()
for _ in range(t):
	(n, x) = invr()
	a = inlist()
	even = 0
	odd = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	res = 'No'
	for i in range(x, -1, -1):
		if i % 2 != 0:
			if i <= odd and x - i <= even:
				res = 'Yes'
				break
	print(res)


t = int(input())
for i in range(t):
	(n, k) = map(int, input().split(' '))
	ar = list(map(int, input().split(' ')))
	arn = list(map(lambda x: x % 2, ar))
	even = arn.count(0)
	odd = arn.count(1)
	z = 0
	for v in range(1, k + 1, 2):
		if v <= odd and k - v <= even:
			print('Yes')
			z = 1
			break
	if z == 0:
		print('No')


import sys, math
from collections import defaultdict as dd, deque, Counter

def data():
	return sys.stdin.readline().strip()

def mdata():
	return list(map(int, data().split()))

def outl(var):
	sys.stdout.write(' '.join(map(str, var)) + '\n')

def out(var):
	sys.stdout.write(str(var) + '\n')
sys.setrecursionlimit(100000)
INF = float('inf')
mod = int(1000000000.0) + 7

def main():
	for t in range(int(data())):
		(n, x) = mdata()
		A = mdata()
		o = 0
		for i in range(n):
			if A[i] % 2 != 0:
				o += 1
		if x % 2 == 0:
			if x == n and o % 2 == 0:
				out('No')
				continue
			if o != n and o > 0:
				print('Yes')
			else:
				print('No')
		else:
			if x == n and o % 2 == 0:
				out('No')
				continue
			if o > 0:
				out('Yes')
			else:
				out('No')
main()


def check(lo, le, x):
	if x % 2 != 0:
		i = x
	else:
		i = x - 1
	while i > 0:
		if i <= len(lo) and x - i <= len(le):
			return 'Yes'
		i = i - 2
	return 'No'
t = int(input())
for k in range(t):
	nx = list(map(int, input().split()))
	n = nx[0]
	x = nx[1]
	l = list(map(int, input().split()))
	lo = []
	le = []
	for i in l:
		if i % 2 == 0:
			le.append(i)
		else:
			lo.append(i)
	print(check(lo, le, x))


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	(e, o) = (0, 0)
	for i in a:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	p = min(o, x)
	f = False
	for i in range(1, p + 1, 2):
		if e >= x - i:
			print('Yes')
			f = True
			break
	if f == False:
		print('No')


def no_odd(l):
	n = 0
	for i in range(len(l)):
		if l[i] % 2 != 0:
			n = n + 1
	return n
t = int(input())
for i in range(t):
	(n, x) = list(map(int, input().split()))
	k = list(map(int, input().split()))
	if x == n:
		if no_odd(k) % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif no_odd(k) > x and x % 2 == 0 and (no_odd(k) > 0):
		if no_odd(k) < n:
			print('Yes')
		else:
			print('No')
	elif no_odd(k) > x and x % 2 != 0 and (no_odd(k) > 0):
		print('yes')
	elif 0 < no_odd(k) <= x:
		print('Yes')
	elif no_odd(k) == 0:
		print('No')


for q in range(int(input())):
	(n, a) = map(int, input().split())
	line = list(map(int, input().split()))
	cou = 0
	for i in line:
		if i % 2 == 1:
			cou += 1
	if cou == 0:
		print('No')
	else:
		a -= 1
		cou -= 1
		cou_ = n - 1 - cou
		if a % 2 == 0:
			a = max(a - cou // 2 * 2, 0)
		else:
			a = max(a - cou // 2 * 2, 1)
		if a <= cou_:
			print('Yes')
		else:
			print('No')


for i in range(int(input())):
	(x, y) = map(int, input().split())
	num = list(map(int, input().split()))
	s = 0
	for j in num:
		if j % 2 == 1:
			s += 1
	if s == 0 or (x == y and s % 2 == 0) or (s == x and y % 2 == 0):
		print('No')
	else:
		print('Yes')


import sys
import math as mt
t = int(input())
for ___ in range(t):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	(o, e) = (0, 0)
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if e == 0 and x % 2 == 0:
		print('No')
	elif o > 0:
		maxi = o + e
		if o % 2 == 0:
			maxi -= 1
		if maxi >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('No')


def solve():
	(n, x) = map(int, input().split())
	li = [int(x) for x in input().split()]
	(e, o) = (0, 0)
	for ele in li:
		if ele % 2 == 0:
			e += 1
		else:
			o += 1
	if e == n:
		print('No')
		return
	elif o == n and x % 2 == 0:
		print('No')
		return
	elif e >= x and o >= 1:
		print('Yes')
		return
	elif o >= x and x % 2 != 0:
		print('Yes')
		return
	elif e <= x and o <= x:
		if o % 2 == 0:
			o -= 1
		if e < x - o:
			print('No')
			return
		else:
			print('Yes')
			return
	else:
		print('Yes')
		return
t = int(input())
for i in range(t):
	solve()


def solve_case():
	(n, m) = map(int, input().split())
	a = list(map(int, input().split()))
	(odd, even) = (0, 0)
	for e in a:
		if e % 2 == 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		return False
	odd -= 1
	m -= 1
	odd = odd - odd % 2
	while odd > m:
		odd -= 2
	m -= odd
	if m <= even:
		return True
	return False

def main():
	tests = int(input())
	for t in range(tests):
		print('Yes' if solve_case() else 'No')
main()


t = int(input())
while t:
	t -= 1
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	a1 = [val % 2 for val in a]
	one = a1.count(1)
	zero = len(a1) - one
	printed = 0
	for i in range(1, x + 1, 2):
		if one >= i and zero >= x - i:
			print('YES')
			printed = 1
			break
	if not printed:
		print('NO')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = [int(j) for j in input().split()]
	c = 0
	for i in l:
		if i % 2 != 0:
			c += 1
	if n == x:
		if c % 2 == 0 or c == 0:
			print('No')
		else:
			print('Yes')
	elif c != 0:
		if l.count(l[0]) == n:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		elif c == n:
			if x % 2 == 0:
				print('No')
			else:
				print('Yes')
		else:
			print('Yes')
	else:
		print('No')


import itertools
test = int(input())
for t in range(test):
	(a, b) = map(int, input().split())
	lst = list(map(int, input().split()))
	flag2 = 0
	if len(set(lst)) == 1:
		if b * lst[0] % 2 != 0:
			print('Yes')
			flag2 = 1
		else:
			print('No')
			flag2 = 1
	if flag2 == 0:
		s = 0
		flag = 0
		for i in itertools.combinations(lst, b):
			s = sum(i)
			if s % 2 != 0:
				flag = 1
				print('Yes')
				break
		if flag == 0:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list((int(num) for num in input().split()))[:n]
	e = []
	o = []
	for num in a:
		if num % 2 == 0:
			e.append(num)
		else:
			o.append(num)
	if len(o) % 2 == 1:
		ao = len(o)
	else:
		ao = len(o) - 1
	if len(o) == 0:
		print('No')
	elif x % 2 == 0:
		if ao >= x - 1:
			er = 1
		else:
			er = x - ao
		if len(e) >= er:
			print('Yes')
		else:
			print('No')
	elif ao >= x:
		print('Yes')
	else:
		er = x - ao
		if len(e) >= er:
			print('Yes')
		else:
			print('No')


for i in range(int(input())):
	(n, x) = input().split()
	(n, x) = (int(n), int(x))
	a = [int(i) for i in input().split()]
	if n == x:
		if sum(a) % 2 == 1:
			possible = True
		else:
			possible = False
	else:
		odd_count = 0
		for i in a:
			if i % 2 == 1:
				odd_count += 1
		possible = True
		if odd_count == 0:
			possible = False
		if x % 2 == 0 and odd_count == n:
			possible = False
	if possible:
		print('YES')
	else:
		print('NO')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	(a, b) = (0, 0)
	for i in l:
		if i % 2 == 0:
			a += 1
		else:
			b += 1
	if b == 0:
		print('NO')
	elif a == 0 and k % 2 == 0:
		print('NO')
	elif b % 2 == 0 and n == k:
		print('NO')
	else:
		print('YES')


import os
import sys
from io import BytesIO, IOBase

def solution(arr, n, x):
	odd = sum((a & 1 == 1 for a in arr))
	eve = n - odd
	ok = False
	i = 1
	while i <= x and i <= odd:
		if x - i <= eve:
			ok = True
		i += 2
	write('YES' if ok else 'NO')

def main():
	for _ in range(r_int()):
		(n, x) = r_array()
		arr = r_array()
		solution(arr, n, x)
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))

def input():
	return sys.stdin.readline().rstrip('\r\n')

def write(*args, end='\n'):
	for x in args[:-1]:
		sys.stdout.write(str(x) + ' ')
	sys.stdout.write(str(args[-1]))
	sys.stdout.write(end)

def r_array():
	return [int(x) for x in input().split()]

def r_int():
	return int(input())
main()


from sys import stdin
from sys import stdout
sprint = stdout.write
sinput = stdin.readline

def func():
	(n, x) = [int(x) for x in sinput().split()]
	arr = [int(x) for x in sinput().split()]
	ne = 0
	no = 0
	for i in range(len(arr)):
		arr[i] = arr[i] % 2
		if arr[i] == 0:
			ne += 1
		else:
			no += 1
	if x > ne:
		x -= ne if (x - ne) % 2 != 0 else max(ne - 1, 0)
	else:
		x = 1
	if x % 2 == 1 and no >= x:
		print('YES')
	else:
		print('NO')
t = int(sinput())
while t != 0:
	t -= 1
	func()


def solve():
	l = [int(y) for y in input().split()]
	n = l[0]
	x = l[1]
	a = [int(y) for y in input().split()]
	odd = 0
	even = 0
	for i in a:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	flag = 0
	i = 1
	while i <= odd and i <= x:
		need = x - i
		if need <= even:
			flag = 1
		i += 2
	if flag == 1:
		print('Yes')
	else:
		print('No')
t = int(input())
while t > 0:
	t -= 1
	solve()


for i in range(int(input())):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	ch = 0
	for j in arr:
		if j % 2 == 0:
			ch += 1
	nech = n - ch
	if nech == 0:
		print('NO')
		continue
	if ch >= x - 1:
		print('YES')
		continue
	nech -= 1
	x -= 1
	if x % 2 == 0:
		if nech // 2 * 2 + ch < x:
			print('NO')
		else:
			print('YES')
	elif ch == 0:
		print('NO')
	elif nech // 2 * 2 + ch < x:
		print('NO')
	else:
		print('YES')


import sys, math, itertools, collections, copy
input = sys.stdin.readline

def solve():
	(N, x) = map(int, input().split())
	a = [int(x) for x in input().split()]
	(even, odd) = (0, 0)
	for i in range(N):
		if a[i] & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		print('NO')
	else:
		if odd % 2 == 0:
			odd -= 1
		if odd + even < x or odd <= 0 or (even == 0 and x % 2 == 0):
			print('NO')
		else:
			print('YES')
for _ in range(int(input())):
	solve()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	nums = list(map(int, input().split()))
	f = [0, 0]
	ok = False
	for i in range(n):
		f[nums[i] % 2] += 1
	for i in range(1, min(x, f[1]) + 1, 2):
		if f[0] >= x - i:
			ok = True
			break
	if ok:
		print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odd = 0
	p = 'No'
	for i in input().split():
		odd += int(i) % 2
	even = n - odd
	for i in range(1, min(odd, x) + 1, 2):
		if even >= x - i:
			p = 'Yes'
			break
	print(p)


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	X1 = 0
	X2 = 0
	for i in range(n):
		if a[i] % 2 == 0:
			X2 += 1
		else:
			X1 += 1
	i = -1
	C = 0
	if X1 == 0:
		print('No')
		continue
	while i <= x:
		i += 2
		if i > X1:
			break
		if i > x:
			break
		if x - i <= X2:
			print('Yes')
			C = 1
			break
	if C == 0:
		print('No')


t = int(input())
for i in range(t):
	(n, x) = [int(a) for a in input().split(' ')]
	nums = input().split(' ')
	has_even = False
	odd_count = 0
	for num in nums:
		if int(num) % 2 == 0:
			has_even = True
		else:
			odd_count += 1
	if odd_count == 0 or (n == x and odd_count % 2 == 0) or (x % 2 == 0 and (not has_even)):
		print('No')
		continue
	print('Yes')


t = int(input())
while t != 0:
	(n, x) = map(int, input().split())
	list1 = list(map(int, input().split()))
	(ev, od) = (0, 0)
	for i in range(n):
		if list1[i] % 2 == 0:
			ev += 1
		else:
			od += 1
	if od > 0:
		x -= 1
		od -= 1
		while x > 0:
			if x >= 2 and od >= 2:
				od -= 2
				x -= 2
			else:
				break
		if ev >= x:
			print('Yes')
		else:
			print('No')
	else:
		print('No')
	t -= 1


x = int(input())
for _ in range(x):
	(n, x) = [int(num) for num in input().split(' ')]
	arr = input().split(' ')
	even = 0
	for ele in arr:
		if int(ele) % 2 == 0:
			even += 1
	is_valid = 0
	for i in range(0, even + 1):
		if (x - i) % 2 != 0 and x - i <= len(arr) - even and (x - i > 0):
			is_valid = 1
	if is_valid:
		print('Yes')
	else:
		print('No')


import typing
import itertools

def main():
	test_cases = int(input())
	for _ in range(test_cases):
		(_, x) = map(int, input().split())
		a = map(int, input().split())
		if has_odd_combination(a, x):
			print('Yes')
		else:
			print('No')

def has_odd_combination(a: typing.Iterable[int], x: int) -> bool:
	odd = 0
	even = 0
	for element in a:
		if element % 2 == 1:
			odd += 1
		else:
			even += 1
	for have in range(1, min(odd, x) + 1, 2):
		need = x - have
		if need <= even:
			return True
	return False
main()


t = int(input())
for _ in range(t):
	(n, x) = [int(x) for x in input().split()]
	if n < x:
		print('No')
		continue
	a = [int(x) for x in input().split()]
	ParityCounter = {0: 0, 1: 0}
	for k in a:
		ParityCounter[k % 2] += 1
	if ParityCounter[0] >= x:
		if ParityCounter[1]:
			print('Yes')
		else:
			print('No')
	elif (x - ParityCounter[0]) % 2 == 1:
		print('Yes')
	elif ParityCounter[1] >= x - ParityCounter[0] + 1 and ParityCounter[0]:
		print('Yes')
	else:
		print('No')


import atexit
import io
import sys
import math
from collections import defaultdict, Counter
t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	even = 0
	odd = 0
	for j in a:
		if j % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('No')
		continue
	if x % 2 == 0:
		if even >= x - 1 or (x - even < odd and even != 0) or (x - even == odd and odd % 2 != 0):
			print('Yes')
		else:
			print('No')
	elif even >= x - 1 or odd >= x or x - even < odd or (x - even == odd and odd % 2 != 0):
		print('Yes')
	else:
		print('No')


import sys
input = sys.stdin.readline
import math

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input().strip()
	return list(s[:len(s)])

def invr():
	return map(int, input().strip().split())

def from_file(f):
	return f.readline

def solution(n, x, A):
	(e, o) = (0, 0)
	for a in A:
		if a & 1:
			o += 1
		else:
			e += 1
	if o == 0:
		return False
	o -= 1
	if x == 1:
		return True
	max_odd = o // 2 * 2
	if x - 1 & 1:
		return e > 0 and e + max_odd >= x - 1
	else:
		return e + max_odd >= x - 1
t = inp()
for _ in range(t):
	(n, x) = invr()
	A = inlt()
	print('Yes' if solution(n, x, A) else 'No')


for _ in range(int(input())):
	(n, k) = map(int, input().split())
	ar = list(map(int, input().split()))
	o = 0
	for i in ar:
		if i & 1:
			o += 1
	if not o or (o == n and (not k & 1)) or (k == n and (not o & 1)):
		print('NO')
	else:
		print('YES')


t = int(input())

def nodd(m):
	if m % 2 == 1:
		return m
	else:
		return m - 1
for i in range(t):
	[n, x] = list(map(int, input().split()))
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(n):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		print('NO')
		continue
	if odd <= x:
		if nodd(odd) + even >= x:
			print('YES')
			continue
	elif x % 2 == 0:
		if even >= 1:
			print('YES')
			continue
	else:
		print('YES')
		continue
	print('NO')


for t in range(int(input())):
	(n, k) = map(int, input().split())
	l = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in range(0, n):
		if l[i] % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd < 1:
		print('No')
	else:
		i = 1
		flag = 0
		while i <= odd:
			diff = k - i
			if diff >= 0:
				if even >= diff:
					flag = 1
					break
			i += 2
		if flag == 1:
			print('Yes')
		else:
			print('No')


import sys
input = sys.stdin.readline
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	odd_c = 0
	even_c = 0
	for ai in map(int, input().split()):
		if ai % 2:
			odd_c += 1
		else:
			even_c += 1
	if odd_c < 1:
		print('No')
		continue
	odd_c -= 1
	x -= 1
	x -= min(x // 2 * 2, odd_c // 2 * 2)
	if x <= even_c:
		print('Yes')
	else:
		print('No')


t = int(input())
for k in range(t):
	(n, x) = map(int, input().split())
	count = 0
	a = list(map(int, input().split()))
	for i in range(n):
		if a[i] % 2 != 0:
			count += 1
	ch = n - count
	nch = count
	if ch > 0 and nch > 0:
		if x == n:
			if nch % 2 == 0:
				print('No')
			else:
				print('Yes')
		else:
			print('Yes')
	elif ch == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif nch == 0:
		print('No')
	else:
		print('Yes')


def solve():
	(n, m) = map(int, input().split())
	l1 = list(map(int, input().split()))
	if n == m:
		d = sum(l1)
		if d % 2 == 1:
			print('YES')
		else:
			print('NO')
		return
	odd = 0
	for i in range(n):
		if l1[i] % 2 == 1:
			odd += 1
	even = n - odd
	if m % 2 == 0:
		if even > 0 and odd > 0:
			print('YES')
		else:
			print('NO')
	elif odd > 0:
		print('YES')
	else:
		print('NO')
for _ in range(int(input())):
	solve()


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	c = 0
	lst = [int(x) for x in input().split()]
	for i in lst:
		if i % 2:
			c += 1
	if c == 0 or (c % 2 == 0 and x == n) or (x % 2 == 0 and c == n):
		print('No')
	else:
		print('Yes')


def solve():
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	(evens, odds) = (0, 0)
	for ele in arr:
		if ele % 2 == 0:
			evens += 1
		else:
			odds += 1
	for i in range(1, n + 2, 2):
		if odds >= i and evens >= x - i and (x - i >= 0):
			print('Yes')
			break
	else:
		print('No')

def main():
	for _ in range(int(input())):
		solve()
main()


import math
f = int
t = f(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	cn = map(lambda b: 1 if b % 2 == 1 else 0, a)
	cnt = sum(list(cn))
	ans = 'No'
	for i in range(1, cnt + 1, 2):
		y = x - i
		if y >= 0 and y <= n - cnt:
			ans = 'Yes'
	print(ans)


t = int(input())
for i in range(0, t):
	nx = input().split()
	n = int(nx[0])
	x = int(nx[1])
	L = list(map(int, input().split()))
	ec = 0
	oc = 0
	for i in range(0, len(L)):
		if L[i] % 2 == 0:
			ec += 1
		else:
			oc += 1
	if oc == 0:
		print('No')
	elif ec == 0:
		if x % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif x == n:
		if oc % 2 == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('Yes')


T = int(input())
for _ in range(T):
	(n, x) = [int(__) for __ in input().split()]
	a = [int(__) for __ in input().split()]
	o = 0
	e = 0
	for k in a:
		if k % 2 == 1:
			o += 1
		else:
			e += 1
	if o == 0:
		print('No')
	elif x - 1 <= e:
		print('Yes')
	elif e == 0:
		if x % 2 == 0:
			print('No')
		else:
			print('Yes')
	elif x - e + (x - e + 1) % 2 <= o:
		print('Yes')
	else:
		print('No')


t = int(input())
for i1 in range(t):
	(n, x) = [int(x) for x in str(input()).split(' ')]
	co = 0
	ce = 0
	a = [int(x) for x in str(input()).split(' ')]
	for y in a:
		if y % 2 == 0:
			ce += 1
		else:
			co += 1
	if co == 0:
		print('No')
		continue
	co1 = co
	if co % 2 == 0:
		co1 -= 1
	if co1 + ce >= x:
		if x % 2 == 0 and ce == 0:
			print('No')
		else:
			print('Yes')
	else:
		print('No')


for _ in range(int(input())):
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	e = 0
	o = 0
	for i in l:
		if i % 2 == 0:
			e += 1
		else:
			o += 1
	if o == 0 or (e == 0 and x % 2 == 0) or (x == n and sum(l) % 2 == 0):
		print('no')
	else:
		print('yes')


for _ in range(int(input())):
	a = input().split(' ')
	n = int(a[0])
	x = int(a[1])
	a = input().split(' ')
	if x == 0:
		print('No')
		continue
	for i in range(n):
		a[i] = int(a[i])
	s = 0
	odd = 0
	even = 0
	for i in range(x):
		s = s + a[i]
		if a[i] % 2 == 0:
			even = even + 1
		else:
			odd = odd + 1
	if s % 2 != 0:
		print('Yes')
		continue
	elif even != 0 and odd != 0 and (x < n):
		print('Yes')
		continue
	elif even == 0:
		done = 0
		for i in range(x, n):
			if a[i] % 2 == 0:
				done = 1
				break
		if done == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	elif odd == 0:
		done = 0
		for i in range(x, n):
			if a[i] % 2 != 0:
				done = 1
				break
		if done == 1:
			print('Yes')
			continue
		else:
			print('No')
			continue
	else:
		print('No')
		continue


import math
t = int(input())
cnt = 0
for cnt in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	cnt_e = 0
	cnt_o = 0
	for i in a:
		if i % 2 == 0:
			cnt_e += 1
		else:
			cnt_o += 1
	if cnt_o == 0:
		print('No')
	elif cnt_o > x:
		if cnt_e != 0:
			print('Yes')
		elif x % 2 != 0:
			print('Yes')
		else:
			print('No')
	elif cnt_o == x:
		if x % 2 == 0:
			if cnt_e != 0:
				print('Yes')
			else:
				print('No')
		else:
			print('Yes')
	elif cnt_o % 2 != 0:
		print('Yes')
	elif x == n:
		print('No')
	else:
		print('Yes')


import sys
input = sys.stdin.readline
I = lambda : list(map(int, input().split()))
for tc in range(int(input())):
	(n, x) = I()
	l = I()
	o = 0
	e = 0
	for i in l:
		if i % 2:
			o += 1
		else:
			e += 1
	if not o:
		print('No')
	elif e == 0 and x % 2 == 0 or (x - e == o and o % 2 == 0):
		print('No')
	else:
		print('Yes')


t = int(input())
while t > 0:
	t -= 1
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	odd = 0
	even = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	check = 0
	i = 1
	while i <= odd and i <= x:
		if even >= x - i:
			check = 1
		i += 2
	if check == 1:
		print('Yes')
	else:
		print('No')


testcases = int(input())
for case in range(testcases):
	nx = list(map(int, input().split(' ')))
	n = nx[0]
	x = nx[1]
	arr = list(map(int, input().split(' ')))
	even = 0
	odd = 0
	for i in arr:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if x % 2 == 0:
		if odd == 0:
			print('No')
		else:
			ans = 'No'
			for i in range(1, x, 2):
				if i <= odd and x - i <= even:
					ans = 'Yes'
					break
			print(ans)
	elif x % 2 != 0:
		if odd == 0:
			print('No')
		else:
			ans = 'No'
			for i in range(0, x, 2):
				if i <= even and x - i <= odd:
					ans = 'Yes'
					break
			print(ans)


def f(n):
	return n - (n & 1 ^ 1)
for _ in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	od = 0
	for y in a:
		od += y & 1
	ev = n - od
	if od == 0:
		print('No')
	else:
		x -= min(f(x), f(od))
		if x > ev:
			print('No')
		else:
			print('Yes')


from sys import stdin
for _ in range(int(stdin.readline())):
	(n, k) = map(int, stdin.readline().split())
	li = [int(x) for x in stdin.readline().split()]
	(odd, even) = (0, 0)
	for i in li:
		if i % 2:
			odd += 1
		else:
			even += 1
	ans = 'No'
	for i in range(1, min(odd, k) + 1, 2):
		if even >= k - i:
			ans = 'Yes'
			break
	print(ans)


from sys import stdin, stdout
T = int(stdin.readline())
for i in range(T):
	(n, x) = map(int, stdin.readline().split())
	A = list(map(int, stdin.readline().split()))
	even = 0
	odd = 0
	for _ in A:
		if _ & 1:
			odd += 1
		else:
			even += 1
	if odd == 0:
		out = 'No'
	elif x & 1:
		if x <= odd:
			out = 'Yes'
		elif odd & 1:
			out = 'Yes' if even >= x - odd else 'No'
		else:
			out = 'Yes' if even >= x - odd + 1 else 'No'
	elif even == 0:
		out = 'No'
	elif x <= even:
		out = 'Yes'
	elif even & 1:
		out = 'Yes' if odd >= x - even else 'No'
	else:
		out = 'Yes' if odd >= x - even + 1 else 'No'
	stdout.write(str(out) + '\n')


import sys
Ri = lambda : [int(x) for x in sys.stdin.readline().split()]
ri = lambda : sys.stdin.readline().strip()

def Yes():
	print('Yes')

def No():
	print('No')

def YES():
	print('YES')

def NO():
	print('NO')
for _ in range(int(ri())):
	(n, x) = Ri()
	a = Ri()
	if x > n:
		No()
	else:
		noo = 0
		noe = 0
		for i in a:
			if i % 2 == 0:
				noe += 1
			else:
				noo += 1
		if x % 2 == 0:
			if noo == 0 or noe == 0:
				No()
			else:
				noo -= 1
				noe -= 1
				x -= 2
				if noo >= x and noe >= x:
					Yes()
				else:
					x -= noo // 2 * 2
					if noe >= x:
						Yes()
					else:
						No()
		elif noo == 0:
			No()
		else:
			noo -= 1
			x -= 1
			if noo >= x:
				Yes()
			else:
				x -= noo // 2 * 2
				if x > noe:
					No()
				else:
					Yes()


t = int(input())
for _ in range(t):
	(n, x) = map(int, input().split())
	arr = list(map(int, input().split()))
	c = [0, 0]
	for i in arr:
		c[i % 2] += 1
	x -= 1
	if c[1] == 0:
		print('No')
	else:
		c[1] -= 1
		x -= min(2 * (c[1] // 2), x - x % 2)
		x -= min(c[0], x)
		if x == 0:
			print('Yes')
		else:
			print('No')


t = int(input())
for i in range(t):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	cnt_odd = 0
	cnt_even = 0
	for i in a:
		if i % 2 == 1:
			cnt_odd += 1
		else:
			cnt_even += 1
	rem = x - cnt_even
	if cnt_odd == 0:
		print('No')
	elif cnt_even == 0 and x % 2 == 0:
		print('No')
	elif cnt_even + 1 >= x:
		print('Yes')
	elif rem % 2 == 1:
		print('Yes')
	elif rem + 1 <= cnt_odd:
		print('Yes')
	else:
		print('No')


for i in range(int(input())):
	(n, a) = map(int, input().split())
	list = [int(i) % 2 for i in input().split()][:n]
	one = list.count(1)
	zero = list.count(0)
	if n == a:
		if one % 2 == 0 or zero == n:
			print('NO')
		else:
			print('YES')
	elif one == n and a % 2 == 0 or zero == n:
		print('NO')
	else:
		print('YES')


for i in range(int(input())):
	(n, x) = map(int, input().split())
	a = list(map(int, input().split()))
	am0 = 0
	am1 = 0
	for j in range(n):
		if a[j] % 2 == 0:
			am0 += 1
		else:
			am1 += 1
	if am1 > 0 and x - 1 - am0 < 0:
		print('Yes')
	elif am1 > 0 and (x - 1 - am0) % 2 == 0:
		print('Yes')
	elif am1 > 0 and am0 > 0 and (x - am0 + 1 <= am1):
		print('Yes')
	else:
		print('No')


def solve():
	(n, x) = map(int, input().split())
	l = list(map(int, input().split()))
	even = 0
	odd = 0
	for i in l:
		if i % 2 == 0:
			even += 1
		else:
			odd += 1
	if odd == 0:
		return 'No'
	if x == n and odd % 2 == 0:
		return 'No'
	if x % 2 == 0:
		if odd > 0 and odd != n:
			return 'Yes'
	if x % 2 != 0:
		if odd > 0:
			return 'Yes'
	return 'No'
t = int(input())
for T in range(t):
	ans = solve()
	print(ans)


import sys
import string
input = sys.stdin.readline

def cin():
	return map(int, sin().split())

def ain():
	return list(map(int, sin().split()))

def sin():
	return input()

def inin():
	return int(input())
for i in range(inin()):
	(n, x) = cin()
	l = ain()
	f = 0
	e1 = 0
	e2 = 0
	o1 = 0
	o2 = 0
	for i in range(n):
		if i % 2 == 0:
			if l[i] % 2 == 0:
				e1 += 1
			else:
				o1 += 1
		elif l[i] % 2 == 0:
			e2 += 1
		else:
			o2 += 1
	if x == n:
		if sum(l) % 2 == 1:
			print('Yes')
		else:
			print('No')
	elif x % 2 == 0:
		if o1 + o2 != 0 and e1 + e2 != 0:
			print('Yes')
		else:
			print('No')
	elif o1 + o2 != 0:
		print('Yes')
	else:
		print('No')