编程题
### 问题描述
小然在一次冒险中,发现了一种神秘的符文。这种符文由 $N$ 个数字组成,每个数字都是 0 或 1。
他通过以下步骤,从一个数组 $A$ 生成了这种符文:
1. 对于数组 $A$ 中的每两个相邻的元素,计算它们的和的奇偶性。
2. 将步骤1得到的奇偶性作为一个数字(0 表示偶数,1 表示奇数),按照原始顺序连接在一起,形成一个新的数组 $B$。也就是说,$B_i = (A_i + A_{i+1}) \bmod 2$,对于 $1 \leq i \leq N-1$,并且 $B_N = (A_N + A_1) \bmod 2$。
然而,小然在一次意外中,丢失了数组 $A$,只剩下了数组 $B$。现在,他想知道,是否存在一个数组 $A$,可以通过上述步骤生成数组 $B$?
### 输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。
每个测试用例包含两行。第一行包含一个整数 $N$,表示数组 $B$ 的长度。第二行包含 $N$ 个空格分隔的整数 $B_1, B_2, ..., B_N$,表示数组 $B$。
### 输出格式
对于每个测试用例,如果存在一个数组 $A$ 能生成数组 $B$,输出 "YES",否则输出 "NO"。
### 样例输入
```text
4
2
0 0
2
1 0
4
1 0 1 0
3
1 0 0
```
### 样例输出
```text
YES
NO
YES
NO
```
### 说明
在第一个测试用例中,数组 $A = [1, 1]$ 可以生成数组 $B = [0, 0]$。
### 评测数据范围
$1 \leq T \leq 1000$。
$2 \leq N \leq 10^5$,$B_i \in \\{0,1\\}$。
保证每个测试用例 $N$ 的总和不超过 $3 \times 10^5$。