프로그래밍 대결 대회
시간 제한2초메모리 제한256 MB
N명의 참가자가 치르는 결투 일정을 정한다. 실력이 높은 쪽이 항상 이기고 각 참가자는 최대 L_i번 결투할 수 있을 때, 모든 결투의 XOR 관심도 합에서 피로도를 뺀 값이 최대가 되게 하라.
문제
온조는 명이 참가하는 프로그래밍 대결 대회를 연다. 이 대회는 두 참가자가 일대일로 맞붙는 번의 대결로 진행된다. 번 참가자의 실력은 이고, 실력이 같은 참가자는 없다. 두 참가자가 대결하면 실력이 더 높은 쪽이 이기고, 진 쪽은 탈락해 더 이상 대결하지 못한다. 대결 한 번마다 한 명씩 탈락하므로 번의 대결이 끝나면 한 명만 남고, 그 사람이 우승자가 된다.
실력이 인 참가자와 실력이 인 참가자가 맞붙은 대결의 흥미로움은 로 정의한다. 여기서 는 비트 단위 XOR이다. 한편 번 참가자는 대결을 한 번 치를 때마다 피로도가 만큼 쌓인다. 즉 번 참가자가 대결을 번 치렀다면 이 참가자의 총 피로도는 이다. 또 번 참가자는 대결을 최대 번까지만 치를 수 있다.
대회의 재미는 모든 대결의 흥미로움을 합한 값에서 모든 참가자의 피로도를 합한 값을 뺀 값이다. 대회의 재미는 음수가 될 수 있다. 누가 언제 누구와 맞붙느냐에 따라 대회의 재미가 달라진다.
예를 들어 실력이 각각 , , 이고 가 각각 , , 이며 이 각각 , , 인 참가자 세 명을 생각해 보자. 먼저 1번과 2번이 맞붙으면 실력이 더 높은 2번이 이기고 1번이 탈락한다. 이 대결의 흥미로움은 이다. 이어서 2번과 3번이 맞붙으면 3번이 이기고 2번이 탈락하며, 이 대결의 흥미로움은 이다. 흥미로움의 합은 이고, 세 참가자가 치른 대결 수가 각각 1번, 2번, 1번이므로 피로도의 합은 이다. 따라서 대회의 재미는 이다. 모든 참가자가 번 이하로 대결했으니 조건도 지켰고, 이보다 재미를 크게 만드는 방법은 없다.
과 부터 , 부터 , 부터 이 주어질 때, 조건을 모두 지키면서 얻을 수 있는 대회의 재미의 최댓값을 구하여라.
입력
첫째 줄에 참가자 수 이 주어진다. ()
둘째 줄에 부터 까지 개의 정수가 공백으로 구분되어 주어진다. () 는 모두 서로 다르다.
셋째 줄에 부터 까지 개의 정수가 공백으로 구분되어 주어진다. ()
넷째 줄에 부터 까지 개의 정수가 공백으로 구분되어 주어진다. ()
출력
첫째 줄에 조건을 모두 지키면서 만들 수 있는 대회의 재미의 최댓값을 출력한다.