#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e5 + 5;
const int Q = 1e5 + 5;
const int B = 300;
struct Query {
int l, r, idx;
bool operator<(const Query& other) const {
if (l / B == other.l / B) {
return (l / B & 1) ? (r > other.r) : (r < other.r);
}
return l < other.l;
}
};
int n, q, k;
int a[N], pref[N];
vector<Query> queries;
ll cur_ans;
int cnt_pref_l[1 << 20], cnt_pref_r[1 << 20];
ll ans[Q];
// Mỗi khi thêm hoặc xoá một đầu mút i ở bên trái thì ta cần đếm xem có bao nhiêu đầu mút r
// sao cho pref[r] ^ pref[i - 1] = k hay pref[r] = pref[i - 1] ^ k
void addLeft(int i) {
cnt_pref_r[pref[i]]++;
cnt_pref_l[pref[i - 1]]++;
cur_ans += cnt_pref_r[pref[i - 1] ^ k];
}
void removeLeft(int i) {
cur_ans -= cnt_pref_r[pref[i - 1] ^ k];
cnt_pref_l[pref[i - 1]]--;
cnt_pref_r[pref[i]]--;
}
// Mỗi khi thêm hoặc xoá một đầu mút i ở bên phải thì ta cần đếm xem có bao nhiêu đầu mút l
// sao cho pref[i] ^ pref[l - 1] = k hay pref[l - 1] = pref[i] ^ k
void addRight(int i) {
cnt_pref_l[pref[i - 1]]++;
cnt_pref_r[pref[i]]++;
cur_ans += cnt_pref_l[pref[i] ^ k];
}
void removeRight(int i) {
cur_ans -= cnt_pref_l[pref[i] ^ k];
cnt_pref_r[pref[i]]--;
cnt_pref_l[pref[i - 1]]--;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> q >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
pref[i] = pref[i - 1] ^ a[i];
}
for (int i = 0; i < q; i++) {
int l, r;
cin >> l >> r;
queries.push_back({l, r, i});
}
sort(queries.begin(), queries.end());
cur_ans = 0;
int cur_l = 1, cur_r = 0;
for (Query q : queries) {
while (cur_l > q.l) {
cur_l--;
addLeft(cur_l);
}
while (cur_r < q.r) {
cur_r++;
addRight(cur_r);
}
while (cur_l < q.l) {
removeLeft(cur_l);
cur_l++;
}
while (cur_r > q.r) {
removeRight(cur_r);
cur_r--;
}
ans[q.idx] = cur_ans;
}
for (int i = 0; i < q; i++) cout << ans[i] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDFlNSArIDU7IApjb25zdCBpbnQgUSA9IDFlNSArIDU7IAkKY29uc3QgaW50IEIgPSAzMDA7ICAgCgpzdHJ1Y3QgUXVlcnkgewoJaW50IGwsIHIsIGlkeDsgCglib29sIG9wZXJhdG9yPChjb25zdCBRdWVyeSYgb3RoZXIpIGNvbnN0IHsKCQlpZiAobCAvIEIgPT0gb3RoZXIubCAvIEIpIHsKCQkJcmV0dXJuIChsIC8gQiAmIDEpID8gKHIgPiBvdGhlci5yKSA6IChyIDwgb3RoZXIucik7IAoJCX0KCQlyZXR1cm4gbCA8IG90aGVyLmw7IAoJfQp9OyAKCmludCBuLCBxLCBrOyAgCmludCBhW05dLCBwcmVmW05dOyAKdmVjdG9yPFF1ZXJ5PiBxdWVyaWVzOyAKCmxsIGN1cl9hbnM7IAppbnQgY250X3ByZWZfbFsxIDw8IDIwXSwgY250X3ByZWZfclsxIDw8IDIwXTsgCmxsIGFuc1tRXTsgCgovLyBN4buXaSBraGkgdGjDqm0gaG/hurdjIHhvw6EgbeG7mXQgxJHhuqd1IG3DunQgaSDhu58gYsOqbiB0csOhaSB0aMOsIHRhIGPhuqduIMSR4bq/bSB4ZW0gY8OzIGJhbyBuaGnDqnUgxJHhuqd1IG3DunQgcgovLyBzYW8gY2hvIHByZWZbcl0gXiBwcmVmW2kgLSAxXSA9IGsgaGF5IHByZWZbcl0gPSBwcmVmW2kgLSAxXSBeIGsgCnZvaWQgYWRkTGVmdChpbnQgaSkgewoJY250X3ByZWZfcltwcmVmW2ldXSsrOyAgCgljbnRfcHJlZl9sW3ByZWZbaSAtIDFdXSsrOyAKCWN1cl9hbnMgKz0gY250X3ByZWZfcltwcmVmW2kgLSAxXSBeIGtdOyAKfQoKdm9pZCByZW1vdmVMZWZ0KGludCBpKSB7CgljdXJfYW5zIC09IGNudF9wcmVmX3JbcHJlZltpIC0gMV0gXiBrXTsgCgljbnRfcHJlZl9sW3ByZWZbaSAtIDFdXS0tOyAKCWNudF9wcmVmX3JbcHJlZltpXV0tLTsgCn0KCi8vIE3hu5dpIGtoaSB0aMOqbSBob+G6t2MgeG/DoSBt4buZdCDEkeG6p3UgbcO6dCBpIOG7nyBiw6puIHBo4bqjaSB0aMOsIHRhIGPhuqduIMSR4bq/bSB4ZW0gY8OzIGJhbyBuaGnDqnUgxJHhuqd1IG3DunQgbCAKLy8gc2FvIGNobyBwcmVmW2ldIF4gcHJlZltsIC0gMV0gPSBrIGhheSBwcmVmW2wgLSAxXSA9IHByZWZbaV0gXiBrIAp2b2lkIGFkZFJpZ2h0KGludCBpKSB7CgljbnRfcHJlZl9sW3ByZWZbaSAtIDFdXSsrOyAKCWNudF9wcmVmX3JbcHJlZltpXV0rKzsKCWN1cl9hbnMgKz0gY250X3ByZWZfbFtwcmVmW2ldIF4ga107IAp9Cgp2b2lkIHJlbW92ZVJpZ2h0KGludCBpKSB7CgljdXJfYW5zIC09IGNudF9wcmVmX2xbcHJlZltpXSBeIGtdOyAKCWNudF9wcmVmX3JbcHJlZltpXV0tLTsKCWNudF9wcmVmX2xbcHJlZltpIC0gMV1dLS07IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyAgCQoJY2luID4+IG4gPj4gcSA+PiBrOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiBhW2ldOyAKCQlwcmVmW2ldID0gcHJlZltpIC0gMV0gXiBhW2ldOyAKCX0KCglmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgewoJCWludCBsLCByOyAKCQljaW4gPj4gbCA+PiByOyAKCQlxdWVyaWVzLnB1c2hfYmFjayh7bCwgciwgaX0pOyAKCX0KCglzb3J0KHF1ZXJpZXMuYmVnaW4oKSwgcXVlcmllcy5lbmQoKSk7IAoKCWN1cl9hbnMgPSAwOyAgIAoJaW50IGN1cl9sID0gMSwgY3VyX3IgPSAwOyAgCgoJZm9yIChRdWVyeSBxIDogcXVlcmllcykgewoJCXdoaWxlIChjdXJfbCA+IHEubCkgewoJCQljdXJfbC0tOyAKCQkJYWRkTGVmdChjdXJfbCk7IAoJCX0KCgkJd2hpbGUgKGN1cl9yIDwgcS5yKSB7CgkJCWN1cl9yKys7IAoJCQlhZGRSaWdodChjdXJfcik7IAoJCX0KCgkJd2hpbGUgKGN1cl9sIDwgcS5sKSB7CgkJCXJlbW92ZUxlZnQoY3VyX2wpOyAKCQkJY3VyX2wrKzsgCgkJfQoKCQl3aGlsZSAoY3VyX3IgPiBxLnIpIHsKCQkJcmVtb3ZlUmlnaHQoY3VyX3IpOyAKCQkJY3VyX3ItLTsgCgkJfQoKCQlhbnNbcS5pZHhdID0gY3VyX2FuczsgCgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBxOyBpKyspIGNvdXQgPDwgYW5zW2ldIDw8ICdcbic7IAp9