#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define lowbit(x) ((x)&-x)
class fenkuai{
ll zhi[300005];
public:
fenkuai(){memset(zhi,0,sizeof(zhi));}
void updata(int x,ll z){
while(x<=300000){
zhi[x]+=z;
x+=lowbit(x);
}
}
ll qer(int x){
ll re=0;
while(x){
re+=zhi[x];
x-=lowbit(x);
}
return re;
}
ll sum(int l,int r){
return qer(r)-qer(l-1);
}
}jsa,jsb,sma,smb;
ll n,a[100005],b[100005],l[200005],k,ans[10005];
struct qs{
int x,y,i;
bool operator<(const qs& b)const{
int x1=x/100,x2=b.x/100;
if(x1==x2)return (x1&1?y>b.y:y<b.y);
return x1<x2;
}
}q[10005];
int find(ll x){
return lower_bound(l,l+n*2,x)-l+1;
}
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i],l[i-1]=a[i];
for(int i=1;i<=n;i++)cin>>b[i],l[i-1+n]=b[i];
sort(l,l+n*2);
cin>>k;
for(int i=1;i<=k;i++){
cin>>q[i].x>>q[i].y;
q[i].i=i;
}
int x=0,y=0;ll ans=0;
sort(q+1,q+1+k);
for(int i=1;i<=k;i++){
while(x<q[i].x){
x++;
sma.updata(find(a[x]),a[x]);
jsa.updata(find(a[x]),1);
ans+=jsb.sum(1,find(a[x]))*a[x]-smb.sum(1,find(a[x]));
ans+=smb.sum(find(a[x]),100000)-jsb.sum(find(a[x]),100000)*a[x];
}
while(x>q[i].x){
sma.updata(find(a[x]),-a[x]);
jsa.updata(find(a[x]),-1);
ans-=jsb.sum(1,find(a[x]))*a[x]-smb.sum(1,find(a[x]));
ans-=smb.sum(find(a[x]),100000)-jsb.sum(find(a[x]),100000)*a[x];
x--;
}
while(y<q[i].y){
y++;
smb.updata(find(b[y]),b[y]);
jsb.updata(find(b[y]),1);
ans+=jsa.sum(1,find(b[y]))*b[y]-sma.sum(1,find(b[y]));
ans+=sma.sum(find(b[y]),100000)-jsa.sum(find(b[y]),100000)*b[y];
}
while(y>q[i].y){
smb.updata(find(b[y]),-b[y]);
jsb.updata(find(b[y]),-1);
ans-=jsa.sum(1,find(b[y]))*b[y]-sma.sum(1,find(b[y]));
ans-=sma.sum(find(b[y]),100000)-jsa.sum(find(b[y]),100000)*b[y];
y--;
}
::ans[q[i].i]=ans;
}
for(int i=1;i<=k;i++)cout<<::ans[i]<<'\n';
}