import java.util.Arrays;
import java.util.Scanner;
public class CarRacing {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for (int i = 0; i < T; i++) {
int N = scan.nextInt();
int[] cars = new int[N];
for (int j = 0; j < N; j++) {
cars[j] = scan.nextInt();
}
process(cars);
}
}
public static void process(int[] cars) {
int i = 0;
while(cars[i] == (i + 1)) {
i++;
}
cars = Arrays.copyOfRange(cars, i, cars.length);
int index = getIndexOfMinValue(cars);
int[] bypass = Arrays.copyOfRange(cars, i, index);
int[] original = Arrays.copyOfRange(cars, index + 1, cars.length);
if (isSorted(bypass) && isSorted(original)) {
System.out.println("YES");
}
else {
System.out.println("NO");
}
}
* 배열에서 최소값의 위치를 구한다.
* @param numbers 배열
* @return 최소값의 위치
*/
public static int getIndexOfMinValue(int[] numbers) {
int min = numbers[0];
int index = 0;
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] < min) {
min = numbers[i];
index = i;
}
}
return index;
}
* 오름차순으로 정렬되어 있는지 판단한다.
* @param numbers 정수 배열
* @return 오름차순으로 정렬되어 있으면 YES, 아니면 NO
*/
public static boolean isSorted(int[] numbers) {
for (int i = 0; i < numbers.length - 1; i++) {
if (numbers[i] > numbers[i + 1]) {
return false;
}
}
return true;
}
}