#include<bits/stdc++.h>
const int M=1e5+4;
using namespace std;
int a[M];
struct node{
unordered_map<int,int>co;
int d;
}seg[4*M];
node merge(node a,node b,int ln)
{
int f=0;
node c;
if(a.d==-2) return b;
if(b.d==-2) return a;
unordered_map<int,int>::iterator it=a.co.begin();
while(it!=a.co.end())
{
c.co[it->first]+=it->second;
it++;
}
it=b.co.begin();
while(it!=b.co.end())
{
c.co[it->first]+=it->second;
it++;
}
if(c.co[a.d]>ln/2) c.d=a.d;
else if(c.co[b.d]>ln/2) c.d=b.d;
else c.d=-1;
return c;
}
void build(int st,int en,int id)
{
if(st==en)
{
seg[id].co.clear();
seg[id].co[a[st]]++;
seg[id].d=a[st];
return;
}
int m=(st+en)>>1;
build(st,m,2*id);
build(m+1,en,2*id+1);
seg[id]=merge(seg[2*id],seg[2*id+1],en-st+1);
}
void upd(int st,int en,int id,int i,int val)
{
if(st==en)
{
seg[id].co.clear();
seg[id].co[val]++;
seg[id].d=val;
a[st]=val;
return;
}
int m=(st+en)>>1;
if(st<=i && i<=m)
upd(st,m,2*id,i,val);
else
upd(m+1,en,2*id+1,i,val);
seg[id]=merge(seg[2*id],seg[2*id+1],en-st+1);
}
node qry(int st,int en,int id,int l,int r)
{
node tmp;
//printf("%d %d\n",st,en);
if(en<l|| r<st || l>r)
{
tmp.d=-2;
return tmp;
}
if(l<=st && en<=r) return seg[id];
int m=(st+en)>>1;
tmp=merge(qry(st,m,2*id,l,r),qry(m+1,en,2*id+1,l,r),en-st+1);
return tmp;
}
int main()
{
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
build(1,n,1);
/*for(int i=1;i<2*n;i++)
{
printf("%d ",seg[i].d);
}*/
while(q--)
{
int ch,x,y;
scanf("%d%d%d",&ch,&x,&y);
if(ch==1)
upd(1,n,1,x,y);
else
{
int ln=y-x+1,f=0;
node tmp=qry(1,n,1,x,y);
for(auto x:tmp.co)
{
if(x.second>ln/2) f=1;
}
if(f)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KY29uc3QgaW50IE09MWU1KzQ7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBhW01dOwpzdHJ1Y3Qgbm9kZXsKCXVub3JkZXJlZF9tYXA8aW50LGludD5jbzsKCWludCBkOwp9c2VnWzQqTV07Cm5vZGUgbWVyZ2Uobm9kZSBhLG5vZGUgYixpbnQgbG4pCnsKCWludCBmPTA7Cglub2RlIGM7CglpZihhLmQ9PS0yKSByZXR1cm4gYjsKCWlmKGIuZD09LTIpIHJldHVybiBhOwoJdW5vcmRlcmVkX21hcDxpbnQsaW50Pjo6aXRlcmF0b3IgaXQ9YS5jby5iZWdpbigpOwoJd2hpbGUoaXQhPWEuY28uZW5kKCkpCgl7CgkgICAgYy5jb1tpdC0+Zmlyc3RdKz1pdC0+c2Vjb25kOwoJICAgIGl0Kys7Cgl9CglpdD1iLmNvLmJlZ2luKCk7Cgl3aGlsZShpdCE9Yi5jby5lbmQoKSkKCXsKCQljLmNvW2l0LT5maXJzdF0rPWl0LT5zZWNvbmQ7CgkJaXQrKzsKCX0KICAgIGlmKGMuY29bYS5kXT5sbi8yKSBjLmQ9YS5kOwogICAgZWxzZSBpZihjLmNvW2IuZF0+bG4vMikgYy5kPWIuZDsKICAgIGVsc2UgYy5kPS0xOwogICAgcmV0dXJuIGM7Cn0Kdm9pZCBidWlsZChpbnQgc3QsaW50IGVuLGludCBpZCkKewoJaWYoc3Q9PWVuKQoJewoJCXNlZ1tpZF0uY28uY2xlYXIoKTsKCQlzZWdbaWRdLmNvW2Fbc3RdXSsrOwoJCXNlZ1tpZF0uZD1hW3N0XTsKCQlyZXR1cm47Cgl9CglpbnQgbT0oc3QrZW4pPj4xOwoJYnVpbGQoc3QsbSwyKmlkKTsKCWJ1aWxkKG0rMSxlbiwyKmlkKzEpOwoJc2VnW2lkXT1tZXJnZShzZWdbMippZF0sc2VnWzIqaWQrMV0sZW4tc3QrMSk7Cn0Kdm9pZCB1cGQoaW50IHN0LGludCBlbixpbnQgaWQsaW50IGksaW50IHZhbCkKewoJaWYoc3Q9PWVuKQoJewoJICAgIHNlZ1tpZF0uY28uY2xlYXIoKTsKCSAgICBzZWdbaWRdLmNvW3ZhbF0rKzsKCSAgICBzZWdbaWRdLmQ9dmFsOwoJICAgIGFbc3RdPXZhbDsKCSAgICByZXR1cm47CQoJfQoJaW50IG09KHN0K2VuKT4+MTsKCWlmKHN0PD1pICYmIGk8PW0pCgl1cGQoc3QsbSwyKmlkLGksdmFsKTsKCWVsc2UKCXVwZChtKzEsZW4sMippZCsxLGksdmFsKTsKCXNlZ1tpZF09bWVyZ2Uoc2VnWzIqaWRdLHNlZ1syKmlkKzFdLGVuLXN0KzEpOwp9Cm5vZGUgcXJ5KGludCBzdCxpbnQgZW4saW50IGlkLGludCBsLGludCByKQp7Cglub2RlIHRtcDsKCS8vcHJpbnRmKCIlZCAlZFxuIixzdCxlbik7CglpZihlbjxsfHwgcjxzdCB8fCBsPnIpCgl7CgkgICAgdG1wLmQ9LTI7CgkgICAgcmV0dXJuIHRtcDsKCX0KCWlmKGw8PXN0ICYmIGVuPD1yKSByZXR1cm4gc2VnW2lkXTsKCWludCBtPShzdCtlbik+PjE7Cgl0bXA9bWVyZ2UocXJ5KHN0LG0sMippZCxsLHIpLHFyeShtKzEsZW4sMippZCsxLGwsciksZW4tc3QrMSk7CglyZXR1cm4gdG1wOwp9CmludCBtYWluKCkKewoJaW50IG4scTsKCXNjYW5mKCIlZCVkIiwmbiwmcSk7Cglmb3IoaW50IGk9MTtpPD1uO2krKykgc2NhbmYoIiVkIiwmYVtpXSk7CglidWlsZCgxLG4sMSk7CgkvKmZvcihpbnQgaT0xO2k8MipuO2krKykKCXsKCQlwcmludGYoIiVkICIsc2VnW2ldLmQpOwoJfSovCgl3aGlsZShxLS0pCgl7CgkJaW50IGNoLHgseTsKCQlzY2FuZigiJWQlZCVkIiwmY2gsJngsJnkpOwoJCWlmKGNoPT0xKQoJCXVwZCgxLG4sMSx4LHkpOwoJCWVsc2UKCQl7CgkJICAgaW50IGxuPXkteCsxLGY9MDsgCgkJICAgbm9kZSB0bXA9cXJ5KDEsbiwxLHgseSk7CgkJICAgZm9yKGF1dG8geDp0bXAuY28pCgkJICAgewoJCSAgIAlpZih4LnNlY29uZD5sbi8yKSBmPTE7CgkJICAgfQoJCSAgIGlmKGYpCgkJICAgcHJpbnRmKCJZZXNcbiIpOwoJCSAgIGVsc2UKCQkgICBwcmludGYoIk5vXG4iKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==