쿼리와 쿼리

M개의 구간 XOR 업데이트와 함께, 업데이트의 x값을 바꾸는 쿼리나 최종 배열의 구간 XOR을 묻는 쿼리에 답한다.

어려움8비트 연산누적 합세그먼트 트리구현아직 제출이 없습니다시간 제한2.5초메모리 제한1024 MB

문제

크기가 N인 배열 A[1], A[2], ... A[N]이 주어진다. 이 배열에 다음 업데이트 연산을 M번 시행할 것이다. 단, ^는 Bitwise XOR 연산이다.

  • l r x : li r인 모든 A[i]에 A[i]=A[i]^x를 실행한다.

여기에 다음 쿼리를 해결하는 프로그램을 작성하시오.

  • 1 L R v : L ≤ i ≤ R인 모든 i에 대해 xi=xi^v를 실행한다. 여기서 xi는 i번째 업데이트에서의 x값이다.
  • 2 s e : M개의 업데이트 연산을 시행 후의 배열에서 A[s]^A[s+1]^...^A[e]의 값을 출력한다.

입력

첫째 줄에 N M Q가 공백으로 구분하여 순서대로 주어진다.(1 ≤ N, M, Q ≤ 105)

둘째 줄에 A[1]부터 A[N]까지 공백으로 구분하여 순서대로 주어진다. (0 ≤ A[i] ≤ 109)

다음 M개의 줄에 업데이트 연산을 의미하는 세 개의 정수 l r x가 순서대로 주어진다. (1 ≤ l ≤ r ≤ N, 0 ≤ x ≤ 109 )

다음 Q개의 줄에 쿼리가 주어진다. 각 쿼리는 1 L R v 또는 2 s e 중 한 가지이다. (1 ≤ L ≤ R ≤ M, 0 ≤ v ≤ 109, 1 ≤ s ≤ e ≤ N)

출력

2번 쿼리가 주어질 때마다 각 줄에 정답을 출력한다.