#define int long long
using namespace std;
const int N=1e5+5;
int n,q;
int a[N],b[N],p[N];
set<int> s;
int lowbit(int x){ return x&-x; }
void add(int x,int val){
for(int i=x;i<=n;i+=lowbit(i)) p[i]+=val;
}
int query(int x){
int res=0;
for(int i=x;i;i-=lowbit(i)) res+=p[i];
return res;
}
int get_sum(int l,int r){
if(l>r) return 0;
return query(r)-query(l-1);
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],add(i,a[i]);
for(int i=1;i<=n;i++){
cin>>b[i];
if(b[i]>1) s.insert(i);
}
cin>>q;
while(q--){
int op,x,y; cin>>op>>x>>y;
if(op==1) {
add(x,-a[x]);
a[x]=y;
add(x,y);
}else if(op==2){
if(b[x]>1) s.erase(x);
b[x]=y;
if(y>1) s.insert(x);
}else{
int ans=a[x],pos=x+1;
while(pos<=y){
int nxt=*s.lower_bound(pos);
if(nxt>y){
ans+=get_sum(pos,y);
break;
}
ans+=get_sum(pos,nxt-1);
ans=max(ans*b[nxt],ans+a[nxt]);
pos=nxt+1;
}
cout<<ans<<endl;
}
}
return 0;
}