#P102. 留香

留香

题目描述

你有一个序列 aia_i保证序列中不存在重复数字,你可以执行以下操作任意多次:

  • 选择 iji \neq j,若 aiajaiaja_i \oplus a_j \neq a_i \mid a_j,则将 aia_iaja_j 交换位置,其中 \oplus 表示按位异或。

请判断能否通过若干次操作(包括 00 次)将序列升序排序。

输入格式

输入包含多个测试用例。第一行输入一个正整数 T(T105)T\,(T \le 10^5), 表示测试用例的数量。

每个测试用例的第一行输入一个正整数,表示序列长度 n(n106,n4×106)n\,(n\leq 10^6, \sum n \le 4\times 10^6)

第二行包括 nn 个数,表示 a1,a2,,an(0ai<231)a_1, a_2, \ldots, a_n\,(0\le a_i < 2^{31})

输出格式

对每个测试用例,如果能通过若干次操作(包括 00 次)将序列升序排序,输出 Yes\texttt{Yes},否则输出 No\texttt{No}

输入输出样例 #1

输入 #1

6
2
1 2
2 
2 1
3
12 6 3
3
3 12 6
4
3 1 2 4
9
9 8 7 6 5 4 3 2 1

输出 #1

Yes
No
Yes
Yes
Yes
Yes

说明/提示

样例解释

在第一组数据中,aia_i 已经升序排列,应输出 "Yes" ;

在第二组数据中,因为 12=121\oplus2=1\,|\,2 ,所以 1,21,2 不能互换,进而不可能升序排序,应输出 "No" ;

在第三组数据中,由互换规则知 12,612,6 以及 6,36,3 可以分别互换,但是 12,312,3 不能互换。该组序列可以通过下面的方法完成升序排序:[12,6,3][12,3,6][6,3,12][3,6,12][12,6,3]\rightarrow[12,3,6]\rightarrow[6,3,12]\rightarrow[3,6,12] ,应输出 "Yes" 。