#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m,a[N],k,b[N],B,nl=1,nr,js[N*2];
long long sum;
struct wasd{
int l,r,i;
long long z;
}d[N];
bool cmp(wasd x,wasd y){
if(x.l/B!=y.l/B)return x.l<y.l;
return x.r<y.r;
}
bool cmp1(wasd x,wasd y){
return x.i<y.i;
}
void add(int u){
sum+=js[b[u]^k];
js[b[u]^k]++;
}
void del(int u){
js[b[u]^k]--;
sum-=js[b[u]^k];
}
int Modui(int l,int r){
while(nl<l)del(nl++);
while(nl>l)add(--nl);
while(nr>r)del(nr--);
while(nr<r)add(nr++);
return sum;
}
int main(){
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
cin>>n>>m>>k;
js[0]=1;
B=sqrt(n);
for(int i=1;i<=n;i++)cin>>a[i],b[i]=b[i-1]^a[i];
for(int i=1;i<=m;i++)cin>>d[i].l>>d[i].r,d[i].i=i,d[i].l--;
sort(d+1,d+1+m,cmp);
for(int i=1;i<=m;i++)d[i].z=Modui(d[i].l,d[i].r);
sort(d+1,d+1+m,cmp1);
for(int i=1;i<=m;i++)cout<<d[i].z<<"\n";
return 0;
}