#include<bits/stdc++.h>
using namespace std;
int n,m,x;
const int N=1e5+10,M=1e7;
int a[N];
int dp[N],idx[M];
//dp[i]:i以前的 符合题意的数对的左数的 下标的最大值
//dp[i]=max(dp[i-1], 与i匹配的数的下标)
int main(){
cin>>n>>m>>x;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
dp[i]=max(dp[i-1],idx[a[i] ^ x]);
idx[a[i]]=i;
//注意idx数组只存了i以前的数的下标信息
}
while(m--){
int l,r;
cin>>l>>r;
cout<< ( l<=dp[r] ? "yes\n" : "no\n");
}
}