#include #define LL long long #define prim 1000000007 using namespace std; LL N,M,a,b,t[400010],r,p[400010],cr[400010],coef[400010]; LL fpow(LL nr, LL put){ LL res=1; nr%=prim; while (put){ if (put&1) res=(res*nr)%prim; nr=(nr*nr)%prim; put>>=1; } return res; } void update(LL pos, LL val){ if (val<0) val+=prim; for (; pos<=N; pos+=(pos&-pos)) t[pos]=(t[pos]+val)%prim; return; } LL query(LL pos){ LL res=0; for (; pos>0; pos-=(pos&-pos)) res=(res+t[pos])%prim; return res; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> N >> a >> b >> M; a%=prim,b%=prim; r=(b*fpow(a,prim-2))%prim; r=(prim-r)%prim; LL i; p[0]=1; for (i=1; i<=N; i++) p[i]=(r*p[i-1])%prim; LL nr; for (i=1; i<=N; i++){ cin >> nr; coef[i]=nr%prim; cr[i]=(p[i]*nr)%prim; update(i,cr[i]); } LL op,x,y; while (M--){ cin >> op >> x >> y; if (op==1){ x++; update(x,(y*p[x]-cr[x])%prim); cr[x]=(y*p[x])%prim; coef[x]=y; } else{ x++,y++; if (r==0){ if ((coef[x]%prim)==0) cout << "Yes\n"; else cout << "No\n"; } else{ if ((query(y)-query(x-1))%prim==0) cout << "Yes\n"; else cout << "No\n"; } } } return 0; }