베시와 친구들이 매년 열리는 슈퍼불 대회에서 후프볼 경기를 한다. 존 농부는 이 대회를 최대한 흥미롭게 만드는 일을 맡았다.
슈퍼불에는 팀 N개가 참가한다. 각 팀은 1 이상 230−1 이하의 정수 ID를 하나씩 받고, 서로 다른 팀은 서로 다른 ID를 받는다. 슈퍼불은 토너먼트 방식이다. 경기가 한 번 끝나면 존 농부가 맞붙은 두 팀 중 어느 팀을 탈락시킬지 고르고, 탈락한 팀은 더 이상 경기에 나설 수 없다. 팀이 하나만 남으면 대회가 끝난다.
존 농부는 점수에서 특이한 규칙을 발견했다. 어떤 경기든 두 팀의 합산 점수는 두 팀 ID의 비트 배타적 논리합(XOR)과 같다. 예를 들어 ID가 12인 팀과 20인 팀이 맞붙으면 그 경기에서 24점이 난다. 01100 XOR 10100=11000이기 때문이다.
존 농부는 한 경기에서 점수가 많이 날수록 그 경기가 더 흥미롭다고 본다. 그래서 대회 전체에서 나는 점수의 합이 최대가 되도록 경기를 짜려고 한다. 매 경기의 대진 상대와 탈락하는 팀은 존 농부가 자유롭게 고를 수 있다. 존 농부를 도와 점수 합의 최댓값을 구하라.
첫째 줄에 팀의 수 N이 주어진다. (1≤N≤2000)
다음 N개 줄에 각 팀의 ID가 한 줄에 하나씩 주어진다. ID는 1 이상 230−1 이하의 정수이고 서로 다르다.
슈퍼불에서 날 수 있는 점수 합의 최댓값을 한 줄에 출력한다.
비트 배타적 논리합(XOR)은 두 정수를 이진수로 적어 놓고 같은 자리의 비트끼리 비교하는 연산이다. 두 비트 중 정확히 하나만 1이면 그 자리의 결과가 1이고, 둘 다 0이거나 둘 다 1이면 0이다. 예를 들어 10100(십진수 20) XOR 01100(십진수 12) =11000(십진수 24)이다. 많은 언어에서 이 연산은 ^ 연산자로 쓴다.