문제
길이가 0인 배열 A가 있다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.
v: 배열 A의 끝에 v를 추가한다.x y v: v^Ax, v^Ax+1, …, v^Ay 중 가장 큰 값을 출력한다. (^은 xor 연산이다.)k: 배열 A의 마지막 k개를 제거한다. (단, 배열이 비어있다면 제거하지 않는다.)
입력
첫째 줄에 쿼리의 개수 q (1 ≤ q ≤ 500,000)가 주어진다.
다음 q개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. (1 ≤ x ≤ y ≤ n, 0 ≤ v ≤ 500,000, 1 ≤ k ≤ n, n은 현재 A의 길이)
출력
2번 쿼리가 주어질 때 마다 정답을 한 줄에 하나씩 출력한다.
예제
10
1 7
2 1 1 1
1 2
2 2 2 7
2 1 2 7
1 1
2 2 2 2
2 1 2 3
2 1 3 5
1 6
6
5
5
0
4
7