#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=100005;
ll n,m,l,r,res,num[N],ans[N],pos[N],cnt,p,a[N];
struct node{
ll l,r,k;
bool operator < (const node &x) const{
if(l/cnt != x.l/cnt) return l < x.l;
if((l/cnt) & 1)
return r<x.r;
return r>x.r;
}
}xu[N];
inline ll read()
{
ll x=0;int b=1;char c=getchar();
while(c>'9' or c<'0') {
if(c=='-') b=-1;
c=getchar();
}
while(isdigit(c)) {
x=x*10+c-'0';
c=getchar();
}
return x*b;
}
void add(ll w)
{
++num[a[w]];
if(num[a[w]]>1) ++res;
return ;
}
void sub(ll w)
{
--num[a[w]];
if(num[a[w]]==1) --res;
return ;
}
int main()
{
n=read();m=read(); cnt=sqrt(n);
for(int i=1;i<=n;++i)
{
a[i]=read();
pos[i]=i/cnt;
}
for(int i=1;i<=m;++i)
{
xu[i].l=read();xu[i].r=read();
xu[i].k=i;
}
sort(xu+1,xu+1+m);
for(int i=1;i<=m;++i)
{
p=0;
while(xu[i].l<l) add(--l);
while(xu[i].l>l) sub(l++);
while(xu[i].r<r) sub(r--);
while(xu[i].r>r) add(++r);
ans[xu[i].k]=res;
}
for(int i=1;i<=m;++i)
if(ans[i]>0) printf("No\n");
else printf("Yes\n");
return 0;
}