#把sums元素和对应的位置index组成字典
#把sums排序,在排序后的sums取sum[i:i+m]个元素,判断这m个元素在原sums中的位置是不是连续的
def solve(sums):
#把sums中的元素值和对应的位置index组成字典
dict_sums = {v:k for k,v in enumerate(sums)}
#若sums中元素有相同的,组成字典的长度是小于sums的长度,直接返回“NO”
if len(dict_sums) != len(sums):
return "NO"
#对sums升序排序
sums = sorted(sums)
#遍历排序后的sums
for i in range(n):
#这里判断严格递增的。i+m必须小于等于n,否则sums[i+m]超出了列表的范围
if i + m <=n:
#这里判断从位置i到i+m-1之间m个递增元素在原sums中的位置是不是连续的
if all(dict_sums[sums[j+1]] == dict_sums[sums[j]] + 1 for j in range(i,i+m-1)):
return "YES"
#这里判断严格递减的。i+1-m >必须大于等于0,否则sums[i+1-m]超出了列表的范围
if i+1-m >=0:
#这里判断从位置i到i+1-m之间m个递减元素在原sums中的位置是不是连续的
if all(dict_sums[sums[j]] + 1 == dict_sums[sums[j-1]] for j in range(i,i+1-m,-1)) :
return "YES"
return "NO"
T = int(input())
for _ in range(T):
n,m = map(int,input().split())
sums = list(map(int, input().split()))
print(solve(sums))