小苯的排序疑惑
题号:NC266952
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯有一个长度为 n 的数组 a,他可以对 a 进行至多一次以下操作:

 \cdot  选择一段区间 [l, r], 满足 (1 \le l \le r \le n),且区间长度严格小于 n,将数组 a[l, r] 这段区间按非降序排序。

换句话说,操作执行完后,区间中的值将满足:a[l] \le a[l+1] \le a[l+2] \le...\le a[r]
现在小苯想知道能否通过执行最多一次操作使得数组 a 按非降序排列。

输入描述:

本题有多组测试用例。
第一行一个正整数 t (1 \le t \le 10^4) 表示测试用例的组数。
每组数据第一行一个正整数 n (1 \le n \le 2 \times 10^5),表示数组的长度。
每组数据第二行 n 个正整数 a_i (1 \le a_i \le 10^9) ,表示数组 a 的元素。

输入保证所有测试用例中的 n 总和不超过  2\times 10^5

输出描述:

输出包含 t 行,表示每组用例的答案。
如果可以使 a 有序,输出 "YES",否则输出 "NO"(输出不含双引号)。
示例1

输入

复制
3
4
1 3 2 4
3
3 5 2
1
1

输出

复制
YES
NO
YES

说明

第一个测试用例,选择排序 [2, 3] 这个区间,数组变为 [1, 2, 3, 4]。因此输出YES。
第二个测试用例,无法选择合法的区间使得数组有序。
第三个测试用例,不需要选择区间,数组本身就有序。

备注:

数组按非降序排列:指数组每一项值都大于等于前一项值(如果前一项存在的话)。
形式化的:
对于任意 1 \leq i \le n - 1 都有 a_i \leq a_{i+1}
特别的,我们认为长度恰好为 1 的数组也是非降序的。