#include <bits/stdc++.h>
#define maxn 100100
using namespace std;
int f[maxn][20];
int a[maxn];
int log_2[maxn];
int n, m, x;
void init() {
log_2[0] = -1;
for (int i = 1; i <= n; i++)
log_2[i] = log_2[i >> 1] + 1;
for (int i = 1; i <= n; i++) {
f[i][0] = a[i];
}
for (int j = 1; (1 << j) <= n; j++)
for (int i = 1; i <= n - (1 << j) + 1; i++)
f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
int query(int A, int B) {
int x = log_2[B - A + 1];
return max(f[A][x], f[B - (1 << x) + 1][x]);
}
int t[maxn];
int main() {
cin >> n >> m >> x;
for (int i = 1; i <= n; i ++) {
int tmp;
cin >> tmp;
a[i] = t[tmp ^ x];
t[tmp] = i;
}
init();
int l, r;
while (m--) {
cin >> l >> r;
if (query(l, r) >= l)
puts("yes");
else
puts("no");
}
return 0;
}