Cho dãy a và số nguyên K. Với mỗi đoạn đóng [l,r], hãy đếm số cặp chỉ số i,j thỏa l≤i≤j≤r và aixorai+1xor⋯xoraj=K.
Input
Dòng đầu chứa n,q và K.
Dòng thứ hai chứa n số nguyên a1,…,an.
Mỗi trong q dòng tiếp theo chứa lr.
Output
In số đoạn con hợp lệ của mỗi truy vấn trên một dòng.
Constraints
1≤n,q≤105.
0≤K,ai<220.
1≤l≤r≤n.
Đáp án vừa kiểu số nguyên 64 bit có dấu.
Scoring
Subtask 1 (50% số điểm): n,q≤2000.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
5 4 3
1 2 3 1 2
1 5
1 3
2 5
4 5
Output
4
2
2
1
Giải thích: Trong [1,3], hai đoạn con [1,2] và [3,3] có XOR bằng 3. Trong [4,5], toàn đoạn có XOR 1xor2=3; các truy vấn khác được đếm tương tự.
Lời giải tóm tắt
Ý tưởng: Lập prefix XOR P; truy vấn [l,r] trở thành đếm cặp prefix trong [l-1,r] có XOR bằng K, rồi dùng Mo với cnt[p xor K].
Tính đúng đắn: Sau khi dịch đủ bốn biên, cửa sổ hiện hành đúng bằng miền của truy vấn. Mỗi đoạn con XOR bằng K tương ứng duy nhất với một cặp prefix có XOR bằng K; cập nhật cnt[p xor K] đếm đúng các cặp mới. Trạng thái ban đầu đúng cho cửa sổ rỗng và mọi phép cập nhật đều bảo toàn bất biến, nên đáp án của từng truy vấn là chính xác.
Độ phức tạp: Độ phức tạp theo thứ tự Mo là O((n+q)√n) phép dịch biên; bài 12 và 14 tốn thêm hệ số log n cho Fenwick. Bộ nhớ O(n+q).
Lỗi thường gặp: Quên đưa prefix P[0] vào cửa sổ bằng cách đổi l thành l-1.
Lỗi thường gặp: Không đảo đúng cập nhật khi xóa phần tử.