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