#PS0000006. Truy vấn XOR đoạn (Range Xor Queries)

Truy vấn XOR đoạn (Range Xor Queries)

Truy vấn XOR đoạn (Range Xor Queries)

Nguồn: CSES

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho mảng nn số nguyên

x1,x2,…,xn.x_1,x_2,\ldots,x_n.

Với mỗi truy vấn [a,b][a,b], hãy tính phép XOR bit của toàn bộ các phần tử từ vị trí aa đến vị trí bb:

xa⊕xa+1⊕⋯⊕xb.x_a\oplus x_{a+1}\oplus\cdots\oplus x_b.

Ký hiệu ⊕\oplus biểu diễn phép XOR theo bit.

Input

  • Dòng đầu chứa hai số nguyên n,qn,q.
  • Dòng thứ hai chứa nn số nguyên x1,x2,…,xnx_1,x_2,\ldots,x_n.
  • Mỗi trong qq dòng tiếp theo chứa hai số nguyên a,ba,b.

Output

Với mỗi truy vấn, in trên một dòng giá trị XOR của đoạn [a,b][a,b].

Subtask

Điều kiện chung đã đối chiếu với nguồn:

  • 1≤n,q≤2⋅1051\le n,q\le2\cdot10^5

  • 1≤xi≤1091\le x_i\le10^9

  • 1≤a≤b≤n1\le a\le b\le n

  • Subtask 1 — 20%: n,q≤40n,q\le40

  • Subtask 2 — 30%: Mọi truy vấn đều có a=1a=1.

  • Subtask 3 — 50%: không có điều kiện bổ sung ngoài các điều kiện chung ở trên.

Ví dụ

Input

8 4
3 2 4 5 1 1 5 3
2 4
5 6
1 8
3 3

Output

3
0
6
4

Giải thích

Mảng là

[3,2,4,5,1,1,5,3].[3,2,4,5,1,1,5,3].
  • Với [2,4][2,4]: 2⊕4⊕5=32\oplus4\oplus5=3.
  • Với [5,6][5,6]: 1⊕1=01\oplus1=0.
  • XOR của toàn bộ 88 phần tử bằng 66.
  • Đoạn [3,3][3,3] chỉ có giá trị 44, nên kết quả là 44.