#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,n) for(int i=0; i=b; i--) #define mset(a,b) memset(a,b,sizeof(a)) #define sz(a) int( a.size() ) #define all(A) A.begin(),A.end() #define mp(a,b) make_pair(a,b) #define pb(a) push_back(a) #define X first #define Y second typedef long long i64; typedef vector VI; typedef vector< VI > VVI; typedef pair PII; typedef vector VS; int n; int a; int b; int q; vector c; bool solve(int u, int v) { double cr = c[v]; FORD(i, v-1, u) { cr = c[i] - cr/(a*1.0)*b; //printf("%d %d %.3f\n", i, c[v], cr); } return (abs(cr) < 0.000000001); } int main(){ cin >> n >> a >> b >> q; c.resize(n); for(int c_i = 0; c_i < n; c_i++){ cin >> c[c_i]; } for(int a0 = 0; a0 < q; a0++){ int queryType; int first; int second; cin >> queryType >> first >> second; if (queryType == 1) { c[first] = second; } else { if (solve(first, second)) printf("Yes\n"); else printf("No\n"); } } return 0; }