#include<bits/stdc++.h>
using namespace std;
struct node
{
int d;
map<int,int>m;
int c;
};
node tree[1000000];
int a[100007];
int n;
vector<int>pos;
void merge(int si)
{
for(auto j:tree[2*si+1].m)
tree[si].m[j.first]+=j.second;
for(auto j:tree[2*si+2].m)
tree[si].m[j.first]+=j.second;
}
void maketree(int beg,int last,int si)
{
if(beg==last)
{
tree[si].m[a[beg]]++;
tree[si].d=a[beg];
tree[si].c=1;
return;
}
maketree(beg,(beg+last)/2,2*si+1);
maketree((beg+last)/2+1,last,2*si+2);
merge(si);
tree[si].c=tree[2*si+1].c+tree[2*si+2].c;
int len=tree[si].c;
if(2*tree[si].m[tree[2*si+1].d]>len)
tree[si].d=tree[2*si+1].d;
else if(2*tree[si].m[tree[2*si+2].d]>len)
tree[si].d=tree[2*si+2].d;
else
tree[si].d=-1;
}
bool update(int beg,int last,int p,int q,int si,int v)
{
if(beg>q||last<p)
return false;
if(beg==last)
{
tree[si].m[a[p]]--;
tree[si].d=v;
tree[si].m[v]++;
return true;
}
bool flag1=update(beg,(beg+last)/2,p,q,2*si+1,v);
bool flag2=update((beg+last)/2+1,last,p,q,2*si+2,v);
if(flag1||flag2)
{
tree[si].m[a[p]]--;
tree[si].m[v]++;
//int len=last-beg+1;
int len=tree[si].c;
if(2*tree[si].m[v]>len)
tree[si].d=v;
else if(2*tree[si].m[a[p]]>len)
tree[si].d=a[p];
else
tree[si].d=-1;
}
return (flag1|flag2);
}
void query(int beg,int last,int p,int q,int si)
{
if(beg>q||last<p)
return;
if(p<=beg&&q>=last)
{
pos.push_back(si);
return;
}
query(beg,(beg+last)/2,p,q,2*si+1);
query((beg+last)/2+1,last,p,q,2*si+2);
}
void func(int t,int x,int y)
{
if(t==1)
{
update(0,n-1,x-1,x-1,0,y);
a[x-1]=y;
}
else
{
x--;y--;
pos.clear();
query(0,n-1,x,y,0);
bool flag=false;
for(auto j:pos)
{
if(tree[j].d==-1)
continue;
int temp=0,len=y-x+1;
for(auto k:pos)
temp+=tree[k].m[tree[j].d];
if(2*temp>len)
{
flag=true;
break;
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
}
int main()
{
//freopen("in.txt","r",stdin);
int q;
scanf("%d%d",&n,&q);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
maketree(0,n-1,0);
//merge(0);
while(q--)
{
int t,x,y;
scanf("%d%d%d",&t,&x,&y);
func(t,x,y);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKCWludCBkOwoJbWFwPGludCxpbnQ+bTsKCWludCBjOwp9OwoKbm9kZSB0cmVlWzEwMDAwMDBdOwppbnQgYVsxMDAwMDddOwppbnQgbjsKdmVjdG9yPGludD5wb3M7Cgp2b2lkIG1lcmdlKGludCBzaSkKewoJZm9yKGF1dG8gajp0cmVlWzIqc2krMV0ubSkKCQl0cmVlW3NpXS5tW2ouZmlyc3RdKz1qLnNlY29uZDsKCWZvcihhdXRvIGo6dHJlZVsyKnNpKzJdLm0pCgkJdHJlZVtzaV0ubVtqLmZpcnN0XSs9ai5zZWNvbmQ7Cn0KCnZvaWQgbWFrZXRyZWUoaW50IGJlZyxpbnQgbGFzdCxpbnQgc2kpCnsKCWlmKGJlZz09bGFzdCkKCXsKCQl0cmVlW3NpXS5tW2FbYmVnXV0rKzsKCQl0cmVlW3NpXS5kPWFbYmVnXTsKCQl0cmVlW3NpXS5jPTE7CgkJcmV0dXJuOwoJfQoJbWFrZXRyZWUoYmVnLChiZWcrbGFzdCkvMiwyKnNpKzEpOwoJbWFrZXRyZWUoKGJlZytsYXN0KS8yKzEsbGFzdCwyKnNpKzIpOwoJbWVyZ2Uoc2kpOwoJdHJlZVtzaV0uYz10cmVlWzIqc2krMV0uYyt0cmVlWzIqc2krMl0uYzsKCWludCBsZW49dHJlZVtzaV0uYzsKCWlmKDIqdHJlZVtzaV0ubVt0cmVlWzIqc2krMV0uZF0+bGVuKQoJCXRyZWVbc2ldLmQ9dHJlZVsyKnNpKzFdLmQ7CgllbHNlIGlmKDIqdHJlZVtzaV0ubVt0cmVlWzIqc2krMl0uZF0+bGVuKQoJCXRyZWVbc2ldLmQ9dHJlZVsyKnNpKzJdLmQ7CgllbHNlCgkJdHJlZVtzaV0uZD0tMTsKfQoKYm9vbCB1cGRhdGUoaW50IGJlZyxpbnQgbGFzdCxpbnQgcCxpbnQgcSxpbnQgc2ksaW50IHYpCnsKCWlmKGJlZz5xfHxsYXN0PHApCgkJcmV0dXJuIGZhbHNlOwoJaWYoYmVnPT1sYXN0KQoJewoJCXRyZWVbc2ldLm1bYVtwXV0tLTsKCQl0cmVlW3NpXS5kPXY7CgkJdHJlZVtzaV0ubVt2XSsrOwoJCXJldHVybiB0cnVlOwoJfQoJYm9vbCBmbGFnMT11cGRhdGUoYmVnLChiZWcrbGFzdCkvMixwLHEsMipzaSsxLHYpOwoJYm9vbCBmbGFnMj11cGRhdGUoKGJlZytsYXN0KS8yKzEsbGFzdCxwLHEsMipzaSsyLHYpOwoJaWYoZmxhZzF8fGZsYWcyKQoJewoJCXRyZWVbc2ldLm1bYVtwXV0tLTsKCQl0cmVlW3NpXS5tW3ZdKys7CgkJLy9pbnQgbGVuPWxhc3QtYmVnKzE7CgkJaW50IGxlbj10cmVlW3NpXS5jOwoJCWlmKDIqdHJlZVtzaV0ubVt2XT5sZW4pCgkJCXRyZWVbc2ldLmQ9djsKCQllbHNlIGlmKDIqdHJlZVtzaV0ubVthW3BdXT5sZW4pCgkJCXRyZWVbc2ldLmQ9YVtwXTsKCQllbHNlCgkJCXRyZWVbc2ldLmQ9LTE7Cgl9CglyZXR1cm4gKGZsYWcxfGZsYWcyKTsKfQoKdm9pZCBxdWVyeShpbnQgYmVnLGludCBsYXN0LGludCBwLGludCBxLGludCBzaSkKewoJaWYoYmVnPnF8fGxhc3Q8cCkKCQlyZXR1cm47CglpZihwPD1iZWcmJnE+PWxhc3QpCgl7CgkJcG9zLnB1c2hfYmFjayhzaSk7CgkJcmV0dXJuOwoJfQoJcXVlcnkoYmVnLChiZWcrbGFzdCkvMixwLHEsMipzaSsxKTsKCXF1ZXJ5KChiZWcrbGFzdCkvMisxLGxhc3QscCxxLDIqc2krMik7Cn0KCnZvaWQgZnVuYyhpbnQgdCxpbnQgeCxpbnQgeSkKewoJaWYodD09MSkKCXsKCQl1cGRhdGUoMCxuLTEseC0xLHgtMSwwLHkpOwoJCWFbeC0xXT15OwoJfQoJZWxzZQoJewoJCXgtLTt5LS07CgkJcG9zLmNsZWFyKCk7CgkJcXVlcnkoMCxuLTEseCx5LDApOwoJCWJvb2wgZmxhZz1mYWxzZTsKCQlmb3IoYXV0byBqOnBvcykKCQl7CgkJCWlmKHRyZWVbal0uZD09LTEpCgkJCQljb250aW51ZTsKCQkJaW50IHRlbXA9MCxsZW49eS14KzE7CgkJCWZvcihhdXRvIGs6cG9zKQoJCQkJdGVtcCs9dHJlZVtrXS5tW3RyZWVbal0uZF07CgkJCWlmKDIqdGVtcD5sZW4pCgkJCXsKCQkJCWZsYWc9dHJ1ZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKGZsYWcpCgkJCXByaW50ZigiWWVzXG4iKTsKCQllbHNlCgkJCXByaW50ZigiTm9cbiIpOwoJfQp9CgppbnQgbWFpbigpCnsKCS8vZnJlb3BlbigiaW4udHh0IiwiciIsc3RkaW4pOwoJaW50IHE7CglzY2FuZigiJWQlZCIsJm4sJnEpOwoJZm9yKGludCBpPTA7aTxuO2krKykKCQlzY2FuZigiJWQiLCZhW2ldKTsKCW1ha2V0cmVlKDAsbi0xLDApOwoJLy9tZXJnZSgwKTsKCXdoaWxlKHEtLSkKCXsKCQlpbnQgdCx4LHk7CgkJc2NhbmYoIiVkJWQlZCIsJnQsJngsJnkpOwoJCWZ1bmModCx4LHkpOwoJfQoJcmV0dXJuIDA7Cn0K