QAQ
#include<bits/stdc++.h>
#define intt long long
using namespace std;
const intt N=1e5+1009,M=32;
intt bminn[N][M],bmaxx[N][M],a_maxx[N][M]/*负数最大值*/,a_minn[N][M]/*非负数最小数*/,amaxx[N][M],aminn[N][M];
intt n,m,q,l,r,ll,rr;
inline intt read(){
char s=getchar();
intt x=0,f=1;
while(s>'9'||s<'0'){
if(s=='-') f=-1;
s=getchar();
}
while(s<'9'&&s>'0'){
x=x*10+s-'0';
s=getchar();
}
return f*x;
}
int main(){
n=read(),m=read(),q=read();
for(intt i=1;i<=n;i++){
intt x=read();
// cout<<x<<endl;
amaxx[i][0]=aminn[i][0]=x;
if(x<0) a_maxx[i][0]=x;
else a_maxx[i][0]=-1e18;
if(x>=0) a_minn[i][0]=x;
else a_minn[i][0]=1e18;
}
for(intt i=1;i<=m;i++)
bminn[i][0]=bmaxx[i][0]=read();
intt h=log(m);
for(intt j=1;j<=h;j++){
for(intt i=1;i<=n-(1<<j)+1;i++){
bmaxx[i][j]=max(bmaxx[i][j-1],bmaxx[i+(1<<(j-1))][j-1]);
bminn[i][j]=min(bminn[i][j-1],bminn[i+(1<<(j-1))][j-1]);
}
}
h=log(n);
for(intt j=1;j<=n;j++){
for(intt i=1;i<=n-(1<<j)+1;i++){
amaxx[i][j]=max(amaxx[i][j-1],amaxx[i+(1<<(j-1))][j-1]);
aminn[i][j]=min(aminn[i][j-1],aminn[i+(1<<(j-1))][j-1]);
a_minn[i][j]=min(a_minn[i][j-1],a_minn[i+(1<<(j-1))][j-1]);
a_maxx[i][j]=max(a_maxx[i][j-1],a_maxx[i+(1<<(j-1))][j-1]);
}
}
for(intt i=1;i<=q;i++){
l=read(),r=read(),ll=read(),rr=read();
intt k=(intt)log(rr-ll+1),h=(intt)log(r-l+1);
intt x=max(bmaxx[ll][k],bmaxx[rr-(1<<k)+1][k]);
intt xx=min(bminn[ll][k],bminn[rr-(1<<k)+1][k]);
// cout<<x<<" "<<xx<<endl;
if(x<0) x *= min ( aminn[l][h] , aminn[ r - ( 1 << h ) + 1][h] );
else x *= max ( a_maxx[l][h] , a_maxx[ r - ( 1 << h ) + 1][h] );
if(xx<0) xx *= min ( a_minn[l][h] , a_minn[r - ( 1 << h ) + 1][h] );
else xx *= max ( amaxx[l][h] , amaxx [r - ( 1 << h ) + 1] [h] );
intt ans=max(x,xx);
cout<<ans<<endl;
}
}