만드는 중입니다

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

하나 더하기

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

요약
2^60 미만의 정수 n개를 XOR로 하나씩 합치는 과정에서, 한 묶음의 값에 1을 한 번 더합니다. 최종으로 남는 값의 최댓값을 구합니다.
난이도

보통10점 중 7점

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

문제

정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. 다음 연산을 정확히 n−1n-1번 수행한다.

  • 수열에서 두 수 xx와 yy를 골라 지우고, 값이 x⊕yx \oplus y인 수를 새로 추가한다.

이 연산만으로는 지루하니, 원하는 순간에 수 하나를 골라 1을 더할 수 있다. 1을 더하는 연산은 정확히 한 번 해야 한다.

과정이 끝나면 수열에는 수가 하나만 남는다. 그 수의 최댓값을 구하라.

입력

첫째 줄에 정수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다.

둘째 줄에 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai<2600 \le a_i < 2^{60})이 주어진다.

출력

남은 수의 최댓값을 한 줄에 출력한다.

힌트

첫 번째 예제에서 최적 전략은 다음과 같다.

  • 1과 2를 고른다: [1, 2, 1, 2]에서 [1, 2, 3]
  • 1과 2를 고른다: [1, 2, 3]에서 [3, 3]
  • 3에 1을 더한다: [3, 3]에서 [3, 4]
  • 3과 4를 고른다: [3, 4]에서 [7]

예제3

  1. 예제 1

    입력
    4
    1 2 1 2
    
    예상 출력
    7
    
  2. 예제 2

    입력
    5
    1 2 3 4 5
    
    예상 출력
    14
    
  3. 예제 3

    입력
    6
    1 2 4 7 15 31
    
    예상 출력
    47