# https://yukicoder.me/problems/no/1707 def same(X, A): for i in range(len(X)): if X[i] != A[i]: return False return True def solve(N, A): X = [i + 1 for i in range(N)] X = X + X # まず集合として一致する? X_ = X.copy() A_ = A.copy() X_.sort() A_.sort() for i in range(2 * N): if X_[i] != A_[i]: return "No" # 並び替えないで一致する? if same(X, A): return "Yes" tmp = [0] *(2 * N) for j in range(N): for k in range(j + 1, j + N): x = k - (j + 1) tmp[k] = X[j + N - 1 - x] for k in range(j + 1, j + N): X[k] = tmp[k] if same(X, A): return "Yes" for k in range(j + 1, j + N): x = k - (j + 1) tmp[k] = X[j + N - 1 - x] for k in range(j + 1, j + N): X[k] = tmp[k] return "No" def main(): T = int(input()) answers = [] for _ in range(T): N = int(input()) A = list(map(int, input().split())) ans = solve(N, A) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()