RT.
#include<bits/stdc++.h>
using namespace std;
int l,r,n,m,belong[1000010];
struct query {
int l,r,id;
bool flag;
} q[100010];
bool cmp1(query a,query b) {
if(belong[a.l]==belong[b.l]) return a.r<b.r;
else return a.l<b.l;
}
bool cmp2(query a,query b) {
return a.id<b.id;
}
int a[100010],cnt[100010];
int sum;
void addl() {
cnt[a[l]]--;
if(cnt[a[l]]==0) sum--;
l++;
// cout<<"ADD L l:"<<l<<endl;
// for(int i=1;i<=4;i++) cout<<cnt[i]<<" ";
cout<<endl;
}
void addr() {
r++;
cnt[a[r]]++;
if(cnt[a[r]]==1) sum++;
// cout<<"ADD R r:"<<r<<endl;
// for(int i=1;i<=4;i++) cout<<cnt[i]<<" ";
cout<<endl;
}
void minl() {
l--;
cnt[a[l]]++;
if(cnt[a[l]]==1) sum++;
// cout<<"MIN L l:"<<l<<endl;
// for(int i=1;i<=4;i++) cout<<cnt[i]<<" ";
cout<<endl;
}
void minr() {
cnt[a[r]]--;
if(cnt[a[r]]==0) sum--;
r--;
// cout<<"MIN R r:"<<r<<endl;
// for(int i=1;i<=4;i++) cout<<cnt[i]<<" ";
cout<<endl;
}
int main() {
scanf("%d%d",&n,&m);
int s=sqrt(n);
for(int i=1;i<=s;i++) {
for(int j=1;j<=s;j++) {
belong[(i-1)*s+j]=i;
}
}
for(int i=s*s+1;i<=n;i++) belong[i]=s+1;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=m;i++) scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
sort(q+1,q+m+1,cmp1);
l=1;
r=1;
cnt[a[l]]=1;
sum=1;
for(int i=1;i<=m;i++) {
while(l<q[i].l) addl();
while(l>q[i].l) minl();
while(r>q[i].r) minr();
while(r<q[i].r) addr();
if(sum==q[i].r-q[i].l+1) q[i].flag=1;
}
sort(q+1,q+m+1,cmp2);
for(int i=1;i<=m;i++) {
if(q[i].flag) puts("Yes");
else puts("No");
}
}