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