评论区的大佬个个都是人才,说话又好听

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        const t = +line
        for(let i = 0; i < t; i++) {
            const [n, m] = (await readline()).split(' ').map(Number)
            const a = (await readline()).split(' ').map(Number)
            // a中一定不能有重复的数,否则不可能单调
            const seen = new Set(a)
            if(seen.size !== n) {
                console.log('NO')
                continue
            }
            let isValid = false
            // 遍历每个[l, r]区间,判断:
            // 1.[l, r]区间单调
            // 2.[l, r]区间外的元素满足  x > max 或 x < min,(min,max为区间的最大和最小值)
            let l = 0, r = m - 1
            while(r < n) {
                const nums = a.slice(l, r + 1)
                let max = nums[0]
                let min = nums[0]
                let upFlag = true
                let downFlag = true
                for(let i = 0; i <= r - l; i++) {
                    if(i < r - l && nums[i] >= nums[i + 1]) {
                        upFlag = false // 非递增
                    }
                    if(i < r - l && nums[i] <= nums[i + 1]) {
                        downFlag = false // 非递减
                    }
                    max = Math.max(nums[i], max)
                    min = Math.min(nums[i], min)
                }
                if(!upFlag && !downFlag)  {
                    // 区间非递增或者非递减
                    l++
                    r++
                    continue
                } 
                // 获取[l, r]区间外的元素
                const front = a.slice(0, l)
                const tail = a.slice(r + 1)
                // console.log(front, min)
                // console.log(tail, max)
                if(front.every(num => num > max || num < min) && 
                tail.every(num => num > max || num < min)) {
                    // 满足条件
                    console.log('YES')
                    isValid = true
                    break
                }
                l++
                r++
            }
            if(!isValid)
                console.log('NO')
        }
    }
}()