XOR 머신

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

문제

당신은 다음과 같은 문제를 두 번 해결해야 한다.

길이 $N$의 수열 $A$와 길이 $2N$의 수열 $B$가 있다. 두 번의 문제 해결에서 $N$은 같지만 $A$는 다를 수 있다. 수열 $A$의 내용은 알 수 없고, $B$는 각 문제를 해결하기 시작할 때 모든 원소가 $0$이다.

부분 수열의 XOR합이란, 부분 수열에 들어있는 모든 원소를 XOR한 값을 의미한다.

당신은 수열 $A$의 모든 짝수 크기의 부분 수열의 XOR합 중 최댓값을 찾아야 한다.

당신은 다음과 같은 연산을 할 수 있다.

  • A $i$ $j$ : $B_i$의 값을 $B_i \oplus A_j$로 바꾼다. 이 연산은 두 번의 문제 해결에서 총합하여 최대 $3N$번 할 수 있다.
  • C $i$ $x$ : $B_i$의 값을 $B_i \oplus x$로 바꾼다. 이 연산은 두 번의 문제 해결에서 총합하여 최대 $2N$번 할 수 있다.
  • Q $k$ $v_{1}$ $v_{2}$ $\cdots$ $v_{k}$ : 길이 $k$의 수열 $B_{v_{1}}, B_{v_{2}}, \cdots B_{v_{k}}$의 모든 부분수열의 XOR합 중 최댓값을 찾는다. 이 연산은 두 번의 문제 해결에서 총합하여 최대 $2$번 할 수 있으며 $k$의 합은 총합하여 $2N$을 넘길 수 없다.
  • ! $x$ : 문제의 답 $x$를 알아냈다면 이 연산을 통해 답을 제출할 수 있다.

연산들을 적절히 사용하여 문제의 답을 찾아내 보자.

각 연산을 할 수 있는 횟수 및 Q 연산에서의 $k$의 합이 제한되어 있으며, 자세한 사항은 인터랙션 항목을 참조하여라.

입력

첫째 줄에 수열의 길이 $N$이 주어진다. $(2 \leq N \leq 100\,000)$

숨겨진 수열 $A$의 원소 $A_i$는 모두 $0$보다 크거나 같고 $5 \times 10^8$보다 작거나 같은 정수이다.

이후 당신과 채점 시스템과의 인터랙션이 진행된다.

힌트

두 정수 $a$, $b$에 대해 $a \oplus b$는 $a$와 $b$를 XOR한 값으로 정의한다.

부분 수열은 수열에서 $0$개 이상의 수를 제거하여 만든 수열을 의미한다.