def solve(num, m): n = len(num) dp = [0] * n # 表示以当前字符结尾的连续严格递增子数组的长度 dp[0] = 1 for i in range(1, n): if num[i] > num[i-1]: dp[i] = dp[i-1] + 1 else: dp[i] = 1 if m not in dp: return 0 if m == n: # 数组n已经严格递增 return 1 end = [] # 子数组m的终点 for i in range(n): if dp[i] >= m: end.append(i) flag = 0 # 标记当前子数组m是否满足条件 for j in end: temp1 = num[j - m +1 : j + 1] # m个元素 temp2 = num[:j - m +1] + num[j + 1:] # 剩余 n- m个元素 for each in temp2: if temp1[0] <= each <= temp1[-1]: break else: flag = 1 if flag: return 1 else: return 0 while True: try: T = int(input()) for _ in range(T): n, m = map(int, input().split()) a = list(map(int, input().split())) if len(set(a)) != n: # 有重复元素 print('NO') continue if n == 1 or m == 1: print('YES') continue res1 = solve(a, m) if res1: print('YES') else: res2 = solve(a[::-1], m) if res2: print('YES') else: print('NO') except: break