#include using namespace std; #define N 100001 #define P 1000000007 typedef long long ll; ll c[N]; ll q_a, q_b; ll extended_gcd(ll a, ll b, ll *x, ll *y){ ll gcd, x1, y1; if (!a == 0){ *x = 0; *y = 1; return b; } gcd = extended_gcd(b % a, a, &x1, &y1); *x = y1 - (b / a) * x1; *y = x1; return gcd; } bool check(int l, int r){ ll x, y, a, b, g, cx, prev; int i, j; a = P; b = q_b; g = extended_gcd(a, b, &x, &y); prev = 0; // tratar P de grau zero l == r for (i = l; i <= r; i++){ if (i == l){ if (cx % g == 0){ prev = y * (cx / g); } else{ return false; } } else{ for (j = -10; j <= 10; j++){ cx = c[i] - q_a * prev - (j * P) / g; if (cx % g == 0){ prev = y * (cx / g); break; } } if (j > 10){ return false; } } } return true; } int main(){ int n, q, op, l, r, p, i; ll x; scanf("%d%lld%lld%d", &n, &q_a, &q_b, &q); for (i = 0; i < n; i++){ scanf("%lld", c + i); } for (i = 0; i < q; i++){ scanf("%d", &op); if (op == 1){ scanf("%d%lld", &p, &x); c[p] = x; } else{ scanf("%d%d", &l, &r); if (!check(l, r)){ printf("Yes\n"); } else{ printf("No\n"); } } } return 0; }