电池分组
题号:NC309232
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

能量值的异或和计算方法如下:对于一个集合 S,其异或和等于集合中所有元素的按位异或结果。例如,集合 \{1, 2, 3\} 的异或和为 1 \oplus 2 \oplus 3 = 0,其中 \oplus 表示异或运算。

现在,小蓝想知道,这 N 个能量电池能否分成两组,使得这两组能量电池的能量值异或和相等。注意,每组至少包含一个能量电池。

请你帮帮他!


输入描述:

输入的第一行包含一个整数 T,表示测试用例的数量。

每个测试用例占两行:

- 第一行包含一个整数 N,表示能量电池的数量。
- 第二行包含 N 个整数 A_1, A_2, \dots, A_N,表示每个能量电池的能量值。

输出描述:

对于每个测试用例,输出一行。如果可以将能量电池分成两组,使得这两组能量电池的能量值异或和相等,则输出 `YES`;否则,输出 `NO`。
示例1

输入

复制
2
3
1 2 3
4
1 2 3 4

输出

复制
YES
NO

备注:

**评测用例规模与约定**

- 对于 30% 的评测用例,1 \le T \le 10, 2 \le N \le 100, 1 \le A_i \le 10^3
- 对于 100% 的评测用例,1 \le T \le 10^3, 2 \le N \le 10^3, 1 \le A_i \le 10^5