小苯的数组构造
题号:NC290414
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

你对位运算很感兴趣,你希望小苯帮你构造一个长度为 n 的全正数组 a,同时满足:
\hspace{15pt}\bullet\ a_1\ |\ a_2\ |\ ...\ |\ a_n = x。 (其中 | 表示按位或运算。)
\hspace{15pt}\bullet\ a_1\oplus a_2\oplus...\oplus a_n = y。(其中 \oplus 表示按位异或运算。)
\hspace{15pt}\bullet\ 1 \leq a_i < 2^{31}, (1 \leq i \leq n)

小苯给了你 x 和 y,希望你帮他解决这个问题。

如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节

输入描述:

每个测试文件内都包含多组测试数据。
第一行一个正整数 T\ (1 \leq T \leq 1000),表示测试数据的组数。
接下来对于每组测试数据,输入包含一行三个整数 n, x, y\ (1 \leq n \leq 2 \times 10^5, 1 \leq x, y < 2^{31}),意义如题所述。
(保证所有测试数据中,n 的总和不超过 3 \times 10^5。)

输出描述:

对于每组测试数据,如果有解,先输出一行一个“YES”,再换行输出一行 n 个正整数,表示构造的数组 a。(有多解输出任意即可。)
如果无解输出一行一个“NO”即可。(都不含双引号)
示例1

输入

复制
2
2 3 1
3 2 3

输出

复制
YES
2 3
NO

说明

对于第一组测试数据,数组 \{2, 3\} 是符合条件的。