#include using namespace std; #define ll long long #define f(i, x, n) for(int i = x; i < (int)n; ++i) int md = 1e9 + 7, X, n, p[100001], s[400004], x[100001]; int pw(int x, int p = md - 2){ if (!p)return 1; int t = pw(x, p >> 1); t = (ll)t * t % md; if (p & 1)t = (ll)t * x % md; return t; } void bld(int l = 0, int r = n, int id = 1){ if (l + 1 == r) { s[id] = x[l]; return; } int m = l + r >> 1, a = id << 1, b = id << 1 | 1; bld(l, m, a); bld(m, r, b); s[id] = (s[a] + (ll)s[b] * p[m - l]) % md; } pair gt(int x, int y, int l = 0, int r = n, int id = 1){ if (x >= r || y <= l)return make_pair(0, 0); if (l >= x && r <= y)return make_pair(s[id], r - l); int m = l + r >> 1, a = id << 1, b = id << 1 | 1; pair p = gt(x, y, l, m, a), q = gt(x, y, m, r, b); return make_pair((p.first + (ll)q.first * ::p[p.second]) % md, p.second + q.second); } void rm(int i, int l = 0, int r = n, int id = 1){ if (l + 1 == r) { s[id] = x[l]; return; } int m = l + r >> 1, a = id << 1, b = id << 1 | 1; if (i < m)rm(i, l, m, a); else rm(i, m, r, b); s[id] = (s[a] + (ll)s[b] * p[m - l]) % md; } int main(){ int a, b, q; scanf("%d%d%d%d", &n, &a, &b, &q); X = (ll)(md - b) * pw(a) % md; p[0] = 1; f(i, 1, n + 1)p[i] = (ll)p[i - 1] * X % md; f(i, 0, n)scanf("%d", x + i); bld(); while (q--){ int o, a, b; scanf("%d%d%d", &o, &a, &b); if (o == 1)x[a] = b, rm(a); else printf("%s\n", gt(a, b + 1).first == 0 ? "Yes" : "No"); } }