#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
const int N=100010;
int n,m,x;
int a[N],pos[N*10];
int dp[N][20];
void rmq()
{
for(int i=1;i<=n;i++) dp[i][0]=a[i];
for(int j=1;j<=20;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
}
}
int main()
{
int s,l,r,k,cnt;
cin>>n>>m>>x;
for(int i=1;i<=n;i++)
{
cin>>s;
a[i]=pos[s^x];
pos[s]=i;
}
rmq();
while(m--)
{
cin>>l>>r;
k=r-l+1;
k=log(k)/log(2);
cnt=max(dp[l][k],dp[r-(1<<k)+1][k]);
if(cnt>=l) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}