#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
const int MAXN=3e5+10,MOD=7;
int n;
set<int> pos;
struct tree{
int l,r;
ll a,d,num;
};
tree tr[4*MAXN];
ll value[MAXN];
void build(int l,int r,int i=1){
tr[i].l=l;
tr[i].r=r;
tr[i].a=-1;
tr[i].d=-1;
tr[i].num=0;
if(l==r){
return;
}
int mid=(l+r)/2;
build(l,mid,2*i);
build(mid+1,r,2*i+1);
}
void push_down(int i){
int mid=(tr[i].l+tr[i].r)/2;
if(tr[i].a>=0||tr[i].d>=0){
tr[i<<1].a=tr[i].a+(tr[i].r-mid)*tr[i].d;
tr[i<<1].d=tr[i].d;
tr[i<<1|1].a=tr[i].a;
tr[i<<1|1].d=tr[i].d;
tr[i].a=-1;
tr[i].d=-1;
}
if(tr[i<<1].a>=0||tr[i<<1].d>=0)
tr[i<<1].num=tr[i<<1].a*(tr[i<<1].r-tr[i<<1].l+1)+(tr[i<<1].r-tr[i<<1].l)*(tr[i<<1].r-tr[i<<1].l+1)/2*tr[i<<1].d;
if(tr[i<<1|1].a>=0||tr[i<<1|1].d>=0)
tr[i<<1|1].num=tr[i<<1|1].a*(tr[i<<1|1].r-tr[i<<1|1].l+1)+(tr[i<<1|1].r-tr[i<<1|1].l)*(tr[i<<1|1].r-tr[i<<1|1].l+1)/2*tr[i<<1|1].d;
}
void modify(int l,int r,ll a,ll d,int i=1){
if(l>r) return;
if(l==tr[i].l&&tr[i].r==r){
tr[i].a=a;
tr[i].d=d;
tr[i].num=tr[i].a*(tr[i].r-tr[i].l+1)+(tr[i].r-tr[i].l)*(tr[i].r-tr[i].l+1)/2*tr[i].d;
return;
}
int mid=(tr[i].l+tr[i].r)/2;
push_down(i);
if(r<=mid){
modify(l,r,a,d,i<<1);
}else if(l>mid){
modify(l,r,a,d,i<<1|1);
}else{
modify(l,mid,a+(r-mid)*d,d,i<<1);
modify(mid+1,r,a,d,i<<1|1);
}
tr[i].num=tr[i<<1].num+tr[i<<1|1].num;
}
void add(int x,ll v){
int l=1,r=n;
pos.insert(x);
value[x]=v;
auto it=pos.lower_bound(x);
auto L=it,R=it;
modify(x,x,0,0);
if(x!=1){
L--;
l=*L;
modify(l+1,x-1,value[l],value[l]);
}
if(x!=n){
R++;
r=*R;
modify(x+1,r-1,v,v);
}
}
ll getsum(int l,int r,int i=1){
push_down(i);
if(l<=tr[i].l&&tr[i].r<=r){
return tr[i].num;
}
int mid=(tr[i].l+tr[i].r)/2;
ll sum=0;
if(l<=mid){
sum+=getsum(l,r,i<<1);
}
if(r>mid){
sum+=getsum(l,r,i<<1|1);
}
return sum;
}
void solve(){
int m,q,op,a,b;
cin>>n>>m>>q;
build(1,n);
pos.insert(1);
pos.insert(n);
vector<ll> x(m),v(m);
for(int i=0;i<m;i++){
cin>>x[i];
}
for(int i=0;i<m;i++){
cin>>v[i];
add(x[i],v[i]);
}
while(q--){
cin>>op>>a>>b;
if(op==1){
add(a,b);
}else{
cout<<getsum(a,b)<<endl;
}
}
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}