#include using namespace std; #define mod 7 long long seg[400006]; long long a[100005]; void build(int node,int start,int end) { if(start==end) { seg[node]=a[start]%mod; return ; } build(node*2,start,(start+end)/2); build(node*2+1,(start+end)/2+1,end); seg[node]=(seg[node*2]+seg[node*2+1]); } void update(int node,int start,int end,int p,long long val) { if(start>p||endqr||end=ql&&end<=qr) return seg[node]; long long val=query(node*2,start,(start+end)/2,ql,qr); val=(val+query(node*2+1,(start+end)/2+1,end,ql,qr)); return val; } long long power(long long x,long long y) { if(y==0) return 1; long long temp=power(x,y/2); temp=(temp*temp)%mod; if(y%2!=0) temp=(temp*x)%mod; return temp; } int main() { long long n,ax,b,q; scanf("%lld %lld %lld %lld",&n,&ax,&b,&q); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); build(1,1,n); long long divi=(ax+b); long long invdivi=power(divi,mod-2)%mod; while(q--) { int ch; scanf("%d",&ch); if(ch==1) { int p;long long val; scanf("%d %lld",&p,&val); update(1,1,n,p+1,val); } else { int ql,qr; scanf("%d %d",&ql,&qr); long long sum=query(1,1,n,ql+1,qr+1); /*long long r=(sum*invdivi)%mod; long long check=(divi*r)%mod;*/ if(sum%divi==0) printf("Yes\n"); else printf("No\n"); } } return 0; }