#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll md = 1e9+7;
void fxd(int i, int j, int l, int r, ll ara[], ll seg[], ll dp[], int node) {
if(i > r || j < l) return;
if(i == j) {
seg[node] = ara[i];
dp[i] = 1;
return;
}
dp[node]=1;
int mid = (i + j) / 2;
fxd(i, mid, l, r, ara, seg, dp, node * 2);
fxd(mid + 1, j, l, r, ara, seg, dp, node * 2 + 1);
if(!dp[node * 2] || !dp[node * 2 + 1] || seg[node * 2] > seg[node * 2 + 1]) dp[node] = 0;
seg[node] = max(seg[node * 2], seg[node * 2 + 1]);
}
int fnd(int i, int j, int l, int r, ll seg[], ll dp[], ll node) {
if(i > r || j < l) return 1;
if(i >= l && j <= r) return dp[node];
int mid = (i + j) / 2;
int x = fnd(i, mid, l, r, seg, dp, node * 2);
int y = fnd(mid + 1, j, l, r, seg, dp, node * 2 + 1);
if(!x || !y) return 0;
else return 1;
}
void solve() {
int n;
scanf("%d", &n);
ll ara[n + 1];
for(int i = 1; i <= n; i++) scanf("%lld", &ara[i]);
ll seg[4 * n + 10];
ll dp[4 * n + 10];
for(int i = 1; i < 4 * n + 10; i++) dp[i] = 1;
fxd(1, n, 1, n, ara, seg, dp, 1);
int q;
scanf("%d", &q);
while(q--) {
int a;
scanf("%d", &a);
if(a == 1) {
int i;
ll x;
scanf("%d %lld", &i, &x);
ara[i] = x;
fxd(1, n, i, i, ara, seg, dp, 1);
} else {
int l, r;
scanf("%d %d", &l, &r);
int ans = fnd(1, n, l, r, seg, dp, 1);
if(ans) printf("YES\n");
else printf("NO\n");
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int T;
T = 1;
while (T--) {
solve();
}
return 0;
}