#define Bitcount __builtin_popcount #define Gcd __gcd #define Inf 0x3f3f3f3f #define Max(x) numeric_limits<x>::max() #define Min(x) numeric_limits<x>::min() #define All(v) v.begin(),v.end() #define RAll(v) v.rbegin(),v.rend() #define Rep(i,m) for(int i=0; i<(int)(m); ++i) #define RRep(i,m) for(int i=(m)-1; i>=0; --i) #define Range(i,m,n) for(int i=(m); i<(int)(n); ++i) #define RRange(i,m,n) for(int i=(n)-1; i>=(m); --i) #define Iter(it,c) for(auto it=(c).begin(); it!=(c).end(); ++it) #define RIter(it,c) for(auto it=(c).rbegin(); it!=(c).rend(); ++it) #define In(a,b) ((b).find(a) != (b).end()) #define Mod(i, n) (((i) % (n) + (n)) % (n)) #define Debug(v) for(auto &vv: (v)) cout << vv << ", "; printf("\n"); #define Dauto decltype(auto) //***************************************************************************** #include <bits/stdc++.h> using LL = long long; using LD = long double; using namespace std; bool Solve1(vector<int>& arr, int n) { int prev = -1; int count = 0; for (auto a : arr) { if (a < prev) { count++; } else { prev = a; } } return count <= 1; } bool Solve2(vector<int>& arr, int n) { int count = 0; if (arr[0] > arr[1]) { arr[0] = arr[1]; count++; } for (int i=1; i<n-1; ++i) { if (arr[i] > arr[i+1]) { if (arr[i-1] <= arr[i+1]) count++; else return false; } } return count <= 1; } int main() { #ifdef _IDETEST_ freopen(NAME ".in", "r", stdin); // freopen(NAME ".out", "w", stdout); #endif int cases; cin >> cases; for (int tc = 1; tc <= cases; tc++) { int n; cin >> n; vector<int> arr(n); Rep(i, n) cin >> arr[i]; if (n<= 2 || Solve1(arr, n) || Solve2(arr,n)) { cout << "YES\n"; } else { cout << "NO\n"; } } }