There are n students standing in a circle in some order. The index of the i-th student is p_i. It is guaranteed that all indices of students are distinct integers from 1 to n (i. e. they form a permutation).

Students want to start a round dance. A clockwise round dance can be started if the student 2 comes right after the student 1 in clockwise order (there are no students between them), the student 3 comes right after the student 2 in clockwise order, and so on, and the student n comes right after the student n - 1 in clockwise order. A counterclockwise round dance is almost the same thing — the only difference is that the student i should be right after the student i - 1 in counterclockwise order (this condition should be met for every i from 2 to n). 

For example, if the indices of students listed in clockwise order are [2, 3, 4, 5, 1], then they can start a clockwise round dance. If the students have indices [3, 2, 1, 4] in clockwise order, then they can start a counterclockwise round dance.

Your task is to determine whether it is possible to start a round dance. Note that the students cannot change their positions before starting the dance; they cannot swap or leave the circle, and no other student can enter the circle. 

You have to answer q independent queries.

Input

The first line of the input contains one integer q (1 ≤ q ≤ 200) — the number of queries. Then q queries follow.

The first line of the query contains one integer n (1 ≤ n ≤ 200) — the number of students.

The second line of the query contains a permutation of indices p_1, p_2, ..., p_n (1 ≤ p_i ≤ n), where p_i is the index of the i-th student (in clockwise order). It is guaranteed that all p_i are distinct integers from 1 to n (i. e. they form a permutation).

Output

For each query, print the answer on it. If a round dance can be started with the given order of students, print "YES". Otherwise print "NO".

Example

Input


5
4
1 2 3 4
3
1 3 2
5
1 2 3 5 4
1
1
5
3 2 1 5 4


Output


YES
YES
NO
YES
YES
import java.util.*;
import java.lang.*;
import java.io.*;

public class GFG {
	public static void main (String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer();
		int Q = Integer.parseInt(br.readLine());
		for(int q = 0; q < Q; q++){
		    int N = Integer.parseInt(br.readLine());
		    if(N == 1){
		        sb.append("YES\n");
		        continue;
		    }
		    int[] arr = new int[N];
		    String[] inp = br.readLine().trim().split("\\s+");
		    for(int n = 0; n < N; n++){
		        arr[n] = Integer.parseInt(inp[n]);
		    }
		    int diff = arr[1] - arr[0];
		    int res = 0;
		    if(diff == 1){
		        for(int n = 1; n < N; n++){
		            if((arr[(n + 1) % N] - arr[n % N] != 1) && (arr[(n + 1) % N] - arr[n % N] != (1 - N))){
		                sb.append("NO\n");
		                res = 1;
		                break;
		            }
		        }
		        if(res == 1) continue;
		        else{
		            sb.append("YES\n");
		            continue;
		        }
		    }
		    else if(diff == -1){
		        for(int n = 1; n < N; n++){
		            if((arr[n % N] - arr[(n + 1) % N] != 1) && (arr[n % N] - arr[(n + 1) % N] != 1 - N)){
		                sb.append("NO\n");
		                res = 1;
		                break;
		            }
		        }
		        if(res == 1) continue;
		        else{
		            sb.append("YES\n");
		            continue;
		        }
		    }
		    else if(diff == N - 1){
		        for(int n = 1; n < N; n++){
		            if((arr[n % N] - arr[(n + 1) % N] != 1) && (arr[n % N] - arr[(n + 1) % N] != 1 - N)){
		                sb.append("NO\n");
		                res = 1;
		                break;
		            }
		        }
		        if(res == 1) continue;
		        else{
		            sb.append("YES\n");
		            continue;
		        }
		    }
		    else if(diff == 1 - N){
		        for(int n = 1; n < N; n++){
		            if((arr[(n + 1) % N] - arr[n % N] != 1) && (arr[(n + 1) % N] - arr[n % N] != 1 - N)){
		                sb.append("NO\n");
		                res = 1;
		                break;
		            }
		        }
		        if(res == 1) continue;
		        else{
		            sb.append("YES\n");
		            continue;
		        }
		    }
		    else{
		        sb.append("NO\n");
		    }
		}
		System.out.print(sb);
	}
	public static long gcd(long a, long b){
	    if(b == 0) return a;
	    else return gcd(b, a % b);
	}
	public static long number_of_divisors(long n){
	    long divisors = 0;
	    for(long i = 1; i <= Math.sqrt(n); i++){
	        if((n % i == 0) && (n / i == i)) divisors += 1;
	        else if((n % i == 0) && (n / i != i)) divisors += 2;
	    }
	    return divisors;
	}
}

