#include<bits/stdc++.h>
using namespace std;
const int N=5e5+1;
int n,cnt,op,q,x,y,k,a[N],b[N],L[N],R[N],bel[N],blo;
void build(int n){
blo=sqrt(n);
cnt=(n+blo-1)/blo;
for(int i=1;i<=cnt;i++){
L[i]=(i-1)*blo+1;
R[i]=i*blo;
}
R[cnt]=n;
for(int i=1;i<=n;i++) bel[i]=(i-1)/blo+1;
for(int i=1;i<=n;i++) b[i]=a[i];
for(int i=1;i<=cnt;i++) sort(b+L[i],b+R[i]+1);
}
void cov(int x,int k){
a[x]=k;
for(int i=L[bel[x]];i<=R[bel[x]];i++) b[i]=a[i];
sort(b+L[bel[x]],b+R[bel[x]]+1);
return;
}
int qsum(int x,int y,int k){
int ans=0;
if(bel[x]==bel[y]){
for(int i=x;i<=y;i++) ans+=a[i]>=k;
return ans;
}
for(int i=x;i<=R[bel[x]];i++) ans+=a[i]>=k;
for(int i=L[bel[y]];i<=y;i++) ans+=a[i]>=k;
for(int i=bel[x]+1;i<=bel[y]-1;i++)
for(int i=bel[x]+1;i<=bel[y]-1;i++) ans+=R[i]-(lower_bound(b+L[i],b+R[i]+1,k)-b)+1;
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
build(n);
cin>>q;
while(q--){
cin>>op>>x>>y;
if(!op){
cin>>k;
cout<<qsum(x,y,k)<<'\n';
}
else cov(x,y);
}
}