#include<bits/stdc++.h>
using namespace std;
#define N 250050
typedef long long ll;
typedef unsigned long long ull;
int n,Q,m;
ull ans,_a[N],_b[N],a[N],b[N];
struct node{
	int ch[2];
}t[N];
#define ls t[u].ch[0]
#define rs t[u].ch[1]
ull calc(int l,int md,int r){
	ull ans=0;
	ull mx=0;
	for(int i=md,j=md+1;i>=l;--i){
		mx=max(mx,b[i]);
		while(j<=r&&b[j]<mx)++j;
		ans+=mx*(j-md);
	}
	mx=0;
	for(int j=md+1,i=md;j<=r;++j){
		mx=max(mx,b[j]);
		while(i>=l&&b[i]<mx)--i;
		ans+=mx*(md-i);
	}
	return ans;
}
void dfs(int l,int r,int u){
	if(l>r)return;
	ans+=a[u]*calc(l,u,r);
	dfs(l,u-1,ls);
	dfs(u+1,r,rs);
}
ull Solve(){
	static int st[N],top;
	top=0;
	ans=0;
	for(int i=1;i<=m;++i){
		while(top&&a[i]>a[st[top]])t[i].ch[0]=st[top--];
		if(top)t[st[top]].ch[1]=i;
		st[++top]=i;
	}
	int rt=st[1];
	dfs(1,m,rt);
	for(int i=1;i<=m;++i){
		t[i].ch[0]=t[i].ch[1]=0;
	}
	return ans;
}
int main(){
	freopen("match.in","r",stdin);
	freopen("match.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	int Taskid;
	cin>>Taskid;
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>_a[i];
	}
	for(int i=1;i<=n;++i){
		cin>>_b[i];
	}
	cin>>Q;
	while(Q--){
		int l,r;
		cin>>l>>r;
		m=r-l+1;
		for(int i=1;i<=m;++i){
			a[i]=_a[l+i-1];
			b[i]=_b[l+i-1];
		}
		cout<<Solve()<<'\n';
	}
	return 0;
}
