#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2.5e5+10;
int t,n,q;
int a[N],b[N];
unsigned ll ans;
struct T{
    int l,r,v;
    void add(int _l,int _r,int _v){
        l=_l,r=_r,v=_v;
    }
}t1[N],t2[N];
void build(int x,int l,int r){
    if(l==r){
        t1[x].add(l,r,a[l]);
        t2[x].add(l,r,b[l]);
        return ;
    }
    int mid=(l+r)>>1;
    build(x<<1,l,mid);
    build(x<<1|1,mid+1,r);
    t1[x].add(l,r,max(t1[x<<1].v,t1[x<<1|1].v));
    t2[x].add(l,r,max(t2[x<<1].v,t2[x<<1|1].v));
}
int fnd(int x,int l,int r,T t[]){
    if(t[x].l==l&&t[x].r==r) return t[x].v;
    int mid=(t[x].l+t[x].r)>>1;
    if(r<=mid) return fnd(x<<1,l,r,t);
    else if(l>mid) return fnd(x<<1|1,l,r,t);
    else return max(fnd(x<<1,l,mid,t),fnd(x<<1|1,mid+1,r,t));
}
int main(){
    freopen("match.in","r",stdin);
    freopen("match.out","w",stdout);
    scanf("%d%d",&t,&n);
    for(int i=1;i<=n;i++)
        scanf("%d",a+i);
    for(int i=1;i<=n;i++)
        scanf("%d",b+i);
    scanf("%d",&q);
    build(1,1,n);
    for(int i=1,l,r;i<=q;i++){
        ans=0;
        scanf("%d%d",&l,&r);
        for(int s=l;s<=r;s++)
            for(int t=s;t<=r;t++){
                int m1=fnd(1,s,t,t1),m2=fnd(1,s,t,t2);
                ans+=1ll*m1*m2;
            }
        cout<<ans<<endl;
    }
    fclose(stdin);
    fclose(stdout);
	return 0;
}
