#include<bits/stdc++.h> #define MAXN 100005 usingnamespace std; inlineintread(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^'0'); ch=getchar(); } return x*f; } structQuery{ int l,r,id; }q[MAXN]; int pos[MAXN]; inlinebooloperator < (const Query &a,const Query &b){ return pos[a.l]<pos[b.l]||(pos[a.l]==pos[b.l]&&((pos[a.l]&1)?a.r<b.r:a.r>b.r)); } int a[MAXN],cnt[MAXN],cnt2; inlinevoidAdd(int x){ ++cnt[x]; if (cnt[x]==2) cnt2++; } inlinevoidDel(int x){ --cnt[x]; if (cnt[x]==1) cnt2--; } int Ans[MAXN]; intmain(){ int n=read(),m=read(); int Size=sqrt(n); for (registerint i=1;i<=n;++i){ a[i]=read(); pos[i]=(i-1)/Size+1; } for (registerint i=1;i<=m;++i){ q[i]=Query{read(),read(),i}; } sort(q+1,q+1+m); int l=1,r=0; for (registerint i=1;i<=m;++i){ while (l>q[i].l) Add(a[--l]); while (r<q[i].r) Add(a[++r]); while (r>q[i].r) Del(a[r--]); while (l<q[i].l) Del(a[l++]); Ans[q[i].id]=(cnt2==0); } for (registerint i=1;i<=m;++i){ puts(Ans[i]?"Yes":"No"); } }