#include #define mx 100011 #define mp make_pair #define pb push_back #define mod 100003 #define xx first #define yy second #define PI 3.14159265 #define DEGTORAD(D)((D * PI) / 180.0) #define RADTODEG(R)((180.0 * R) / PI) using namespace std; long long n,a,b,q,l,r,x; long long tree[4*mx],arr[mx]; void build(long long node,long long b,long long e){ if(b==e){ tree[node]=arr[b]; return; } long long l=node<<1; long long r=l+1; long long mid=(b+e)>>1; build(l,b,mid); build(r,mid+1,e); tree[node] = __gcd(tree[l],tree[r]); } long long query(long long node,long long b,long long e,long long i,long long j){ if(ej) return 0; if(b>=i&&e<=j){ return tree[node]; } long long l=node<<1; long long r=l+1; long long mid=(b+e)>>1; long long p=query(l,b,mid,i,j); long long q=query(r,mid+1,e,i,j); return __gcd(p,q); } int main() { cin>>n>>a>>b>>q; for(long long i=1;i<=n;i++){ cin>>arr[i]; } double x=-(double)b/(double)a; for(long long i=1;i<=q;i++){ int type; cin>>type; if(type==1){ cin>>l>>r; arr[l]=r; } else{ cin>>l>>r; double ans=0; for(int i=l,j=0;i<=r;i++,j++){ double ll=pow(x,(double)j); ans += (double)arr[i] * pow(x,(double)(j)); } if(ans==0){ cout<<"Yes"<