#include using namespace std; #define int int64_t const int mod = 1e9 + 7; int bpow(int x, int n) { if(n == 0) return 1; int t = bpow(x, n / 2); if(n % 2 == 0) return t * t % mod; else return t * t % mod * x % mod; } const int maxn = 1e5 + 52; int sum[maxn]; void add(int p, int x) { for(; p < maxn; p += p & -p) sum[p] = (sum[p] + x) % mod; } int get(int p) { int r = 0; for(; p > 0; p -= p & -p) r = (r + sum[p]) % mod; return r; } int get(int l, int r) { return (mod + get(r) - get(l - 1)) % mod; } int curc[maxn]; signed main() { ios::sync_with_stdio(0); cin.tie(0); int n, a, b, q; cin >> n >> a >> b >> q; int x = (mod - b) * bpow(a, mod - 2) % mod; for(int i = 0; i < n; i++) { int c; cin >> c; curc[i] = c; add(i + 1, curc[i] * bpow(x, i) % mod); } while(q--) { int t; cin >> t; if(t == 1) { int i, c; cin >> i >> c; add(i + 1, (mod - curc[i]) * bpow(x, i) % mod); curc[i] = c; add(i + 1, curc[i] * bpow(x, i) % mod); } else { int l, r; cin >> l >> r; if(x == 0) { cout << (curc[l] == 0 ? "Yes" : "No") << "\n"; continue; } int k = get(l + 1, r + 1); cout << (k == 0 ? "Yes" : "No") << "\n"; } } return 0; }