// God & me // Together :) #include using namespace std; typedef long long ll; const int maxn = 1e5 + 17, mod = 1e9 + 7; int n, x, a, b, q; struct node{ int x, l; } iman[maxn << 1]; int po(int a, int b){ int x = 1; for(; b; b >>= 1, a = (ll) a * a % mod) if(b & 1) x = (ll) x * a % mod; return x; } node operator +(node &a, node &b){ return {(a.x + (ll) b.x * po(x, a.l)) % mod, a.l + b.l}; } int main(){ ios::sync_with_stdio(0), cin.tie(0); cin >> n >> a >> b >> q; x = mod - b; x = (ll) x * po(a, mod - 2) % mod; for(int i = 0; i < n; i++){ cin >> iman[i + n].x; iman[i + n].l = 1; } for(int i = n - 1; i >= 0; i--) iman[i] = iman[i << 1] + iman[i << 1 | 1]; for(int t, l, r, x; q--; ){ cin >> t >> l >> r, r++; if(t == 1) for(iman[l += n].x = --r; l >>= 1; ) iman[l] = iman[l << 1] + iman[l << 1 | 1]; else{ node L({0, 0}), R({0, 0}); for(l += n, r += n; l < r; l >>= 1, r >>= 1){ if(l & 1) L = L + iman[l++]; if(r & 1) R = iman[--r] + R; } cout << ((L + R).x ? "No" : "Yes") << '\n'; } } return 0; }