## https://yukicoder.me/problems/no/2518 def solve(N, A): two = -1 zero = -1 for i in range(N): if A[i] == 2: two = i elif A[i] == 0: zero = i if two == -1 or zero == -1: return "No" next_nodes = [[None , None ] for _ in range(N)] in_degree = [0] * N for i in (-1, 1): n = (two + i) % N in_degree[n] += 1 if i == -1: next_nodes[two][0] = n else: next_nodes[two][1] = n for index in range(1, N - 1): target = (two + index) % N if next_nodes[target][0] is None: if A[target] == 2: return "No" elif A[target] == 1: m = (target + 1) % N next_nodes[target][1] = m in_degree[m] += 1 else: m = (target + 1) % N next_nodes[m][0] = m in_degree[target] += 1 else: if A[target] == 0: return "No" elif A[target] == 1: m = (target + 1) % N next_nodes[m][0] = m in_degree[target] += 1 else: m = (target + 1) % N next_nodes[target][1] = m in_degree[m] += 1 target = (two - 1) % N if A[target] == 0: if in_degree[target] == 2: return "Yes" else: return "No" elif A[target] == 1: if in_degree[target] == 1: return "Yes" else: return "No" else: if in_degree[target] == 0: return "Yes" else: 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()