#把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))