#include using namespace std; typedef long long ll; const int N = 200010; int n,q,at,val,seg[4 * N],a , b,type,l,r; int gcd(int a , int b){ return !b ? a : gcd(b,a%b); } void update(int n , int s , int e,int at , int val){ if(s > at || e < at) return; if(s == e){ seg[n] = val; return; } update(2 * n , s, (s + e)/2,at,val); update(2 * n + 1 , (s + e)/2 + 1 , e,at,val); seg[n] = gcd(seg[2 * n],seg[2 * n + 1]); } int get(int n , int s , int e , int l , int r){ if(s > r || e < l) return 0; if(s >= l && e <= r) return seg[n]; return gcd(get(2*n,s,(s+e)/2,l,r),get(2*n+1 ,(s + e)/2 + 1 , e ,l , r)); } int main() { // freopen("input.txt","r",stdin); scanf("%d%d",&n,&q); scanf("%d%d",&a,&b); if(b != 0){ return 0; } for (int i = 1; i <= n; ++i){ scanf("%d",&type); update(1,1,n,i,type); } while(q--){ scanf("%d",&type); if(type == 1){ scanf("%d%d",&at,&val); at++; update(1,1,n,at,val); }else{ scanf("%d%d",&l,&r); l++,r++; int gg = get(1,1,n,l,r); bool yes = false; if((gg % a) == 0){ if(n == r && get(1,1,n,n,n) == 0){ yes = true; } if(n != r){ yes = true; } } if(yes){ puts("Yes"); }else{ puts("No"); } } } return 0; }