만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

111111111111111

시간 제한2.5초메모리 제한1024 MB

요약
주어진 정수 N개의 각 접두사에 대해 일부를 골라 XOR한 값 중 이진 표현의 1의 개수가 가장 많은 수를 날마다 하나씩 출력합니다.
난이도

보통10점 중 7점

유형
비트 연산, 수학, 완전 탐색
정답자
아직 제출이 없습니다

문제

AI Network에서 일하는 루노(Runo)들은 이진수를 사용하며, 이진수 표현에 11이 많은 수를 좋아한다.

루노들을 관리하는 아인(AIN)은 루노들의 동기 부여를 위해 앞으로 NN일간 날마다 가장 열심히 일한 루노에게 "오늘의 루노상"을 수여하려고 한다. 이 상의 상품은 루노들이 좋아할 법한, 이진수 표현에 11이 많은 수이다.

어떤 수를 상품으로 줘야 할지 고민하던 아인은 수를 직접 고르는 일이 어렵다는 것을 깨닫고, 다음 NN일 동안 매일 정수를 하나씩 배달해 주는 서비스를 구독했다. ii번째 날에 받을 수를 ViV_i라고 하자.

아인은 매일 그날까지 모은 수들을 보고 다음 방식으로 상품을 만든다.

  1. 오늘이 서비스를 구독한 ii번째 날이라면, V1,V2,⋯ ,ViV_1, V_2, \cdots, V_i 중에서 일부를 마음대로 고른다. 수를 하나도 고르지 않거나 전부 고를 수도 있다.
  2. 고른 수들을 모두 bitwise XOR한 값을 계산한다. 수를 하나도 고르지 않았다면 결괏값은 00이고, 하나만 골랐다면 결괏값은 그 수 자체이다.

아인은 이렇게 만들 수 있는 수 중에서 이진수 표현에 11이 가장 많은 수를 하나 골라 상품으로 준다.

앞으로 NN일간 날마다 아인이 상품으로 선택할 수 있는 수를 하나 구해 보자.

입력

첫 번째 줄에 상을 주려는 일수이자 정수 배달 서비스를 구독하는 일수 NN이 주어진다.

다음 NN개의 줄에는 서비스를 통해 배달받는 정수가 한 줄에 하나씩 주어진다. 이 중 ii번째 줄에 주어지는 수는 ViV_i이다.

출력

NN개의 줄에 걸쳐 답을 출력한다. ii번째 줄에는 아인이가 ii번째 날에 상품으로 선택할 수 있는 수를 하나 출력한다.

제한

  • 1≤N≤1111 \leq N \leq 111
  • 0≤Vi≤111 111 111 111 1110 \leq V_i \leq 111\,111\,111\,111\,111

예제3

  1. 예제 1

    입력
    2
    3
    5
    
    예상 출력
    3
    6
    
  2. 예제 2

    입력
    3
    6
    14
    9
    
    예상 출력
    6
    14
    15
    
  3. 예제 3

    입력
    3
    1010000000
    110
    1
    
    예상 출력
    1010000000
    1010000110
    1010000111