#include<cstdio>
int a[1000010],q[1000010],L[1000010],top,n,m,Q;
int main(){
scanf("%d%d%d",&n,&m,&Q);
for(int i=1;i<=n;i++)scanf("%d",a+i);
for(int i=1;i<=n;i++){
if(!top)q[++top]=i;
else{
if(a[i]/2==a[q[top]]/2&&a[i]==a[q[top]]+1)top--; //来自某dalao的代码 对于入栈的每一个括号 如果匹配到则一同退栈,维护每个括号可以匹配的区间,如果栈为空,则说明该括号匹配全局,如果非空,则该括号匹配从栈顶符号到自身的区间
else q[++top]=i;
}
L[i]=q[top];
}
for(int i=1;i<=Q;i++){
int x,y;
scanf("%d%d",&x,&y);
if((y-x)&1){
if(L[y]==L[x-1]) puts("Yes");
else puts("No");
}
else puts("No");
}
return 0;
}