import java.io.*; import java.util.*; class test { static boolean DEBUG_FLAG = false; int INF = (int)1e9; long MOD = 1000000007; static void debug(String s) { if(DEBUG_FLAG) { System.out.print(s); } } void solve(InputReader in, PrintWriter out) throws IOException { int n = in.nextInt(); int[] a = new int[n]; int[] b = new int[n]; for(int i=0; i<n; i++) { a[i] = in.nextInt(); b[i] = a[i]; } int c = 0; for(int i=1; i<n; i++) { if(a[i]>=a[i-1]) { } else { a[i] = a[i-1]; c++; } } int x = 0; for(int i=n-2; i>=0; i--) { if(b[i]<=b[i+1]) { } else { b[i] = b[i+1]; x++; } } if(c>1&&x>1) { out.println("NO"); } else out.println("YES"); } public static void main(String[] args) throws IOException { if(args.length>0 && args[0].equalsIgnoreCase("d")) { DEBUG_FLAG = true; } InputReader in = new InputReader(); PrintWriter out = new PrintWriter(System.out); int t = in.nextInt(); long start = System.nanoTime(); while(t-- >0) { new test().solve(in, out); } long end = System.nanoTime(); debug("\nTime: " + (end-start)/1e6 + " \n\n"); out.close(); } static class InputReader { static BufferedReader br; static StringTokenizer st; public InputReader() { br = new BufferedReader(new InputStreamReader(System.in)); } String next() { while (st == null || !st.hasMoreTokens()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { e.printStackTrace(); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(next()); } long nextLong() { return Long.parseLong(next()); } double nextDouble() { return Double.parseDouble(next()); } } }