#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";
    }
  }

}