만드는 중입니다

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

셰프 건공이

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

요약
0 이상 511 이하의 값 N개에서 구간 [l, r]의 부분집합을 골라, 선택한 값들의 XOR에 선택한 개수를 더한 최댓값을 Q개의 질의마다 구합니다.
난이도

보통10점 중 6점

유형
비트 연산, 동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

알고 있었는가, 사실 건공이는 굉장히 유능한 요리사이다. 건공이는 어떤 재료를 받아도 가장 맛있는 음식을 만들어 낼 수 있는 엄청난 능력이 있다.

건공이는 11번 재료부터 NN번 재료까지 총 NN개의 재료를 가지고 있다. 각 재료 ii는 맛 수치 TiT_i를 가진다. 건공이가 만드는 음식의 맛은 (사용한 모든 재료의 맛을 XOR한 값) + (사용한 모든 재료의 개수)로 나타낼 수 있다.

QQ개의 쿼리가 주어지고 각 쿼리마다 ll과 rr이 주어진다. 각 쿼리에 대하여 ll번째 재료부터 rr번째 재료까지 (r−l+1r - l + 1)개의 재료 중 0개 이상을 적절히 사용하여 만들 수 있는 요리의 맛 중 최댓값을 구하여라.

입력

첫 번째 줄에 재료의 개수 NN이 주어진다. (1≤N≤5001 \leq N \leq 500)

두 번째 줄에 NN개의 재료의 맛 수치 T1,T2,⋯ ,TNT_1, T_2, \cdots, T_N이 공백으로 구분되어 주어진다. (0≤Ti≤5110 \leq T_i \leq 511)

세 번째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤100 0001 \leq Q \leq 100\ 000)

다음 QQ개의 줄에 ll과 rr이 공백으로 구분되어 주어진다. (1≤l≤r≤N1 \leq l \leq r \leq N)

출력

QQ개의 줄에 각 쿼리마다 건공이가 만들 수 있는 요리의 맛 중 최댓값을 한 줄씩 출력한다.

예제1

  1. 예제 1

    입력
    8
    1 2 3 4 5 6 7 8
    5
    1 1
    2 4
    4 8
    5 6
    3 4
    
    예상 출력
    2
    9
    19
    7
    9