#include<bits/stdc++.h>
using namespace std;
int T,n,_,i,l,r,p,q,a[250001],b[250001],c[250001],d[250001];
unsigned long long ans,now;
struct seg{
    unsigned long long s[1000001];
    int tag[1000001];
    void build(int l,int r,int u){
        s[u]=tag[u]=0;
        if(l==r)return;
        int m=(l+r)>>1;
        build(l,m,u<<1);build(m+1,r,u<<1|1);
    }
    void addtag(int l,int r,int z,int u){
        s[u]=(unsigned long long)(r-l+1)*z;
        tag[u]=z;
    }
    void pushdown(int l,int r,int m,int u){
        if(!tag[u])return;
        addtag(l,m,tag[u],u<<1);
        addtag(m+1,r,tag[u],u<<1|1);
        tag[u]=0;
    }
    void update(int x,int y,int z,int l,int r,int u){
        if(x<=l&&r<=y){
            addtag(l,r,z,u);
            return;
        }
        int m=(l+r)>>1;
        pushdown(l,r,m,u);
        if(x<=m)update(x,y,z,l,m,u<<1);
        if(y>m)update(x,y,z,m+1,r,u<<1|1);
        s[u]=s[u<<1]+s[u<<1|1];
    }
    unsigned long long query(int x,int y,int l,int r,int u){
        if(x<=l&&r<=y)return s[u];
        int m=(l+r)>>1;unsigned long long ans=0;
        pushdown(l,r,m,u);
        if(x<=m)ans+=query(x,y,l,m,u<<1);
        if(y>m)ans+=query(x,y,m+1,r,u<<1|1);
        return ans;
    }
}u,v;
int main(){
    freopen("match.in","r",stdin);
    freopen("match.out","w",stdout);
    ios::sync_with_stdio(0);cin.tie(0);
    cin>>T>>n;
    for(i=1;i<=n;i++)cin>>a[i];
    for(i=1;i<=n;i++)cin>>b[i];
    cin>>_;
    while(_--){
        cin>>l>>r;
        u.build(l,r,1);v.build(l,r,1);
        p=q=1;
        now=ans=0;
        for(i=l;i<=r;i++){
            while(q>1&&b[i]>b[d[q]]){
                now-=u.query(d[q-1]+1,d[q],l,r,1)*b[d[q]];
                q--;
            }
            d[++q]=i;
            now+=u.query(d[q-1]+1,d[q],l,r,1)*b[i];
            v.update(d[q-1]+1,d[q],b[i],l,r,1);
            while(p>1&&a[i]>a[c[p]]){
                now-=v.query(c[p-1]+1,c[p],l,r,1)*a[c[p]];
                p--;
            }
            c[++p]=i;
            now+=v.query(c[p-1]+1,c[p],l,r,1)*a[i];
            u.update(c[p-1]+1,c[p],a[i],l,r,1);
            ans+=now;
        }
        cout<<ans<<"\n";
    }
}