CF1163E.Magical Permutation

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Kuro has just learned about permutations and he is really excited to create a new permutation type. He has chosen nn distinct positive integers and put all of them in a set SS . Now he defines a magical permutation to be:

  • A permutation of integers from 00 to 2x12^x - 1 , where xx is a non-negative integer.
  • The bitwise xor of any two consecutive elements in the permutation is an element in SS .

Since Kuro is really excited about magical permutations, he wants to create the longest magical permutation possible. In other words, he wants to find the largest non-negative integer xx such that there is a magical permutation of integers from 00 to 2x12^x - 1 . Since he is a newbie in the subject, he wants you to help him find this value of xx and also the magical permutation for that xx .

输入格式

The first line contains the integer nn ( 1n21051 \leq n \leq 2 \cdot 10^5 ) — the number of elements in the set SS .

The next line contains nn distinct integers S1,S2,,SnS_1, S_2, \ldots, S_n ( 1Si21051 \leq S_i \leq 2 \cdot 10^5 ) — the elements in the set SS .

输出格式

In the first line print the largest non-negative integer xx , such that there is a magical permutation of integers from 00 to 2x12^x - 1 .

Then print 2x2^x integers describing a magical permutation of integers from 00 to 2x12^x - 1 . If there are multiple such magical permutations, print any of them.

输入输出样例

  • 输入#1

    3
    1 2 3
    

    输出#1

    2
    0 1 3 2 
  • 输入#2

    2
    2 3
    

    输出#2

    2
    0 2 1 3 
  • 输入#3

    4
    1 2 3 4
    

    输出#3

    3
    0 1 3 2 6 7 5 4 
  • 输入#4

    2
    2 4
    

    输出#4

    0
    0 
  • 输入#5

    1
    20
    

    输出#5

    0
    0 
  • 输入#6

    1
    1
    

    输出#6

    1
    0 1 

说明/提示

In the first example, 0,1,3,20, 1, 3, 2 is a magical permutation since:

  • 01=1S0 \oplus 1 = 1 \in S
  • 13=2S1 \oplus 3 = 2 \in S
  • 32=1S3 \oplus 2 = 1 \in S

Where \oplus denotes bitwise xor operation.

首页