#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=100100;
int n,m,c[maxn],l=1,bsize,r=1,cnt[maxn],res,ans[maxn];
struct Ques{
int l,r,id,b;
}ques[maxn];
inline bool cmp(Ques a,Ques b){
if(a.b==b.b) return a.r<b.r;
return a.b<b.b;
}
inline int read(){
int res=0,w=1;char c;
while(!isdigit(c)){
if(c=='-') w=-1;
c=getchar();
}
while(isdigit(c)){
res=res*10+(c-'0');
c=getchar();
}
return res*w;
}
void add(int l){
cnt[c[l]]++;
if(cnt[c[l]]==2)res++;
}
void del(int l){
cnt[c[l]]--;
if(cnt[c[l]]==1)res--;
}
int main(){
n=read();m=read();
bsize=sqrt(n);
for(int i=1;i<=n;i++) c[i]=read();
for(int i=1;i<=m;i++){
ques[i].l=read();
ques[i].r=read();
ques[i].id=i;
ques[i].b=l/bsize;
}
sort(ques+1,ques+m+1,cmp);
for(int i=1;i<=m;i++){
while(ques[i].r>r) add(++r);
while(ques[i].l<l) add(--l);
while(ques[i].r<r) del(r--);
while(ques[i].l>l) del(l++);
ans[ques[i].id]=res;
}
for(int i=1;i<=m;i++){
if(ans[i]!=0) printf("No\n");
else printf("Yes\n");
}
return 0;
}