//Daniel Grzegorzewski #include #define MP make_pair #define PB push_back #define ST first #define ND second #define int long long using namespace std; typedef pair PII; typedef vector VI; typedef vector VII; typedef long long LL; void init_ios() { ios_base::sync_with_stdio(0); cin.tie(0); } const int MOD = 1e9+7; const int N = 1<<18; int fpow(int x, int y) { if (y == 0) return 1; if (y&1) return (x*fpow(x, y-1))%MOD; int res = fpow(x, y/2); return (res*res)%MOD; } int n, a, b, q, c[N], drz[2*N], li; void add(int v, int val) { v += N; drz[v] = val; while (v > 1) { v /= 2; drz[v] = (drz[2*v]+drz[2*v+1])%MOD; } } int get(int a, int b) { a += N; b += N; int res = drz[a]; if (a != b) res = (res+drz[b])%MOD; while (a/2 != b/2) { if (a%2 == 0) res = (res+drz[a+1])%MOD; if (b%2 == 1) res = (res+drz[b-1])%MOD; a /= 2; b /= 2; } return res; } signed main() { init_ios(); cin >> n >> a >> b >> q; li = ((-1)*b*fpow(a, MOD-2))%MOD; li = (li+MOD)%MOD; for (int i = 0; i < n; ++i) { cin >> c[i]; int co = (c[i]*fpow(li, i))%MOD; add(i, co); } while (q--) { int p, qq, r; cin >> p >> qq >> r; if (p == 1) { int co = (r*fpow(li, qq))%MOD; c[qq] = r; add(qq, co); continue; } if (li == 0 && c[qq] == 0) { cout<<"Yes\n"; continue; } else if (li == 0) { cout<<"No\n"; continue; } int val = get(qq, r); if (val == 0) cout<<"Yes\n"; else cout<<"No\n"; } }