# include # include using namespace std; const pair < int , int > DD[] = {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}}; # define fi cin # define fo cout # define x first # define y second # define ll long long # define IOS ios_base :: sync_with_stdio(0);cin.tie(0) # define p(v) cerr << #v << " = " << v << '\n' # define p2(v) cerr << #v << " = " << (complex < int > (v.x,v.y)) << '\n' # define vi vector < int > # define vl vector < ll > # define pii pair < int , int > # define mp make_pair # define db long double # define pb push_back # define pdd pair < db , db > # define int ll int32_t main(void) { #ifdef CF freopen("input","r",stdin); #endif // CF srand(time(0)); fo << fixed << setprecision(7); cerr << fixed << setprecision(7); int n,q,a,b; IOS; static int coef[1 << 20]; fi>>n>>a>>b>>q; for (int i = 1;i <= n;++i) fi>>coef[i]; if (!b) { while (q --) { int op; fi>>op; if (op == 1) { int pos,v; fi>>pos>>v; ++pos; coef[pos] = v; } else { int l,r; fi>>l>>r; ++l;++r; if (coef[l]) fo << "No\n"; else fo << "Yes\n"; } } return 0; } const int mod = 1e9 + 7; auto pow = [&](int a,int b) { int ans = 1; while (b) { if (b & 1) ans = (1ll * ans * a) % mod; b /= 2; a = (1ll * a * a) % mod; } return ans; }; static int t[1 << 20]; auto U = [&](int i,int v) { for (;i <= n;i += i&(-i)) (t[i] += v) %= mod; }; auto Q = [&](int i) { int ans = 0; for (;i;i -= i&(-i)) (ans += t[i]) %= mod; return ans; }; const int inv = pow(b,mod - 2); const int C = mod - (1ll * a * inv % mod); for (int i = 1;i <= n;++i) U(i,(1ll * pow(C,n - i) * coef[i]) % mod); while (q --) { int op; fi>>op; if (op == 1) { int pos,v; fi>>pos>>v; ++pos; int was = (1ll * pow(C,n - pos) * coef[pos]) % mod; was = (mod - was) % mod; U(pos,was); coef[pos] = v; U(pos,(1ll * pow(C,n - pos) * coef[pos]) % mod); } else { int l,r; fi>>l>>r; ++l;++r; if (l == r) fo << (coef[l] ? "No\n" : "Yes\n"); else { int sum = (Q(r - 1) + mod - Q(l - 1)) % mod; sum = (1ll * sum * pow(pow(C,n - r + 1),mod - 2)) % mod; sum = 1ll * sum * (mod - C) % mod; if (coef[r] != sum) fo << "No\n"; else fo << "Yes\n"; } } } cerr << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms" << '\n'; return 0; }