문제1163--XOR은 즐거워?

1163: XOR은 즐거워?

시간제한 : 2.000 sec  메모리제한 : 256 MB

문제 설명

상엽은 숫자를 담고 있는 상자들을 가지고 있다. 

상자는 0번부터 시작해서 각 번호를 가지고 있으며 0이상 100,000미만의 숫자를 가지고 있다.


상엽은 지은에게 A번째 상자부터 B번째 상자까지에 들어 있는 수들을 전부 XOR 하는 프로그램 제작을 부탁 하였다.


3, 4, 5, 3, 2, 1 의 항목에서 2번 상자부터 5번 상자까지라면 5 xor 3 xor 2 xor 1 로 5의 결과를 반환하면 된다.


상엽은 중간 중간 항목에 있는 수들을 변경하는 명령어도 프로그램에 추가해달라고 요청했다. 


예를 들어 상엽이는 i번째 박스의 숫자에 j를 xor하여 변경하는 명령어가 필요하다.


지은이는 이 프로그램을 해결 하지 않고 휴가를 가버렸다.


지은이를 위해 프로그램을 만들어주자.

입력 설명

첫 줄에는 테스트 케이스의 수 T (1 <= T <= 10)이 주어진다. 
두 번째 줄에 수열의 크기 N(1 <= N <= 100,000)이 주어진다.
세 번째 줄에는 A0, A1, ..., AN-1이 차례대로 주어지며, 공백 한 칸으로 구분되어져 있다.
각 값 Ai 는 0 <= Ai <= 100,000 범위를 가진다.
네 번째 줄에는 명령어의 개수 M(1 <= M <= 100,000)이 주어지고, 
다음 M개의 줄에 명령어가 한 줄에 하나씩 주어진다.
이때 각 명령어는 S, I, J 로 이루어지며 자세한 내용은 아래와 같다.

명령어가 1로 시작할 때
1 i j  :Ai 의 수를 j와 xor 하여 업데이트 진행한다.  (0 <= i  < N , 0 <= j <= 100,000)
2로 시작 할 때
2 i j : Ai ~ Aj 사이의 수를 xor 한 결과를 출력한다. (0 <= i <= j  < N)

 

출력 설명

2로 시작하는 명령어의 결과를 한 줄에 마다 하나씩 출력한다.
 

입력 예시 Copy

1
10
8 9 8 7 5 7 5 5 0 2 
5
2 0 2
2 1 7
2 5 7
1 6 1
2 6 7

출력 예시 Copy

9
4
7
1

출처/분류