만드는 중입니다

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

사전순 최대

면접 대비

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

요약
같은 자리의 비트끼리 원소 사이를 자유롭게 교환할 수 있을 때, 사전순으로 가장 큰 배열을 만드는 문제입니다.
난이도

보통10점 중 4점

유형
비트 연산, 그리디
정답자
아직 제출이 없습니다

문제

전자 장치의 메모리에 NN개의 정수로 이루어진 리스트 a1,…,aNa_1, \dots , a_N이 저장되어 있다. 이 장치에는 수 사이에서 비트를 서로 바꾸는 특이한 연산이 있다. 정수 ii, jj, kk가 주어지면 이 연산은 aia_i의 kk번째 비트와 aja_j의 kk번째 비트를 서로 바꾼다(반대도 마찬가지이다).

이 연산을 한 번 이상 수행하면 원래 리스트에 없던 수가 나오거나, 원래 원소들보다 모두 크거나 작은 수가 나오는 등 매우 흥미로운 현상이 일어날 수 있다.

연산을 필요한 만큼 사용하여 리스트를 사전순으로 최대가 되게 바꾸려 한다. 즉, a1a_1이 가능한 한 크고, a1a_1을 최대로 만드는 경우들 중에서 a2a_2가 가능한 한 크며, 이런 식으로 이어진다.

입력

첫째 줄에 정수 NN (1≤N≤1051 \le N \le 10^5)이 주어진다. 둘째 줄에는 리스트 a1,…,aNa_1, \dots , a_N을 이루는 NN개의 정수가 공백으로 구분되어 주어진다 (0≤ai≤1090 \le a_i \le 10^9).

출력

사전순으로 최대가 되는 수열을 공백으로 구분된 NN개의 정수로 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    4
    8 4 2 1
    
    예상 출력
    15 0 0 0
    
  2. 예제 2

    입력
    4
    12 15 1 20
    
    예상 출력
    31 13 4 0