#include <bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(register int i(l);i^r+1;i=-(~i))
#define per(i,r,l) for(register int i(r);i^l-1;--i)
using namespace std;
const int mx=1e5+5;
int n,m,q,a[mx],b[mx],
f11[mx][21],f12[mx][21],g11[mx][21],g12[mx][21],\
f21[mx][21],f22[mx][21],g21[mx][21],g22[mx][21];
int get_mx(int f[][21],int l,int r){
int k=log2(r-l+1);
return max(f[l][k],f[r-(1<<k)+1][k]);
}
int get_mi(int f[][21],int l,int r){
int k=log2(r-l+1);
return min(f[l][k],f[r-(1<<k)+1][k]);
}
signed main(){
cin>>n>>m>>q;
rep(i,1,n)cin>>a[i];
rep(i,1,m)cin>>b[i];
rep(i,1,n)
if(a[i]>=0)
f11[i][0]=f12[i][0]=a[i],g11[i][0]=inf,g12[i][0]=-inf;
else
g11[i][0]=g12[i][0]=a[i],f11[i][0]=inf,f12[i][0]=-inf;
rep(i,1,m)
if(b[i]>=0)
f21[i][0]=f22[i][0]=b[i],g21[i][0]=inf,g22[i][0]=-inf;
else
g21[i][0]=g22[i][0]=b[i],f21[i][0]=inf,f22[i][0]=-inf;
rep(j,1,20){
rep(i,1,n){
if(i+(1<<j)-1<=n){
f11[i][j]=min(f11[i][j-1],f11[i+(1<<j-1)][j-1]);
f12[i][j]=max(f12[i][j-1],f12[i+(1<<j-1)][j-1]);
g11[i][j]=min(g11[i][j-1],g11[i+(1<<j-1)][j-1]);
g12[i][j]=max(g12[i][j-1],g12[i+(1<<j-1)][j-1]);
}
}
}
rep(j,1,20){
rep(i,1,m){
if(i+(1<<j)-1<=m){
f21[i][j]=min(f21[i][j-1],f21[i+(1<<j-1)][j-1]);
f22[i][j]=max(f22[i][j-1],f22[i+(1<<j-1)][j-1]);
g21[i][j]=min(g21[i][j-1],g21[i+(1<<j-1)][j-1]);
g22[i][j]=max(g22[i][j-1],g22[i+(1<<j-1)][j-1]);
}
}
}
while(q--){
int l1,r1,l2,r2;
cin>>l1>>r1>>l2>>r2;
if(get_mi(g21,l2,r2)==inf){
if(get_mi(f11,l1,r1)==inf){
cout<<get_mx(g12,l1,r1)*get_mx(f22,l2,r2)<<endl;
}
else{
cout<<get_mx(f12,l1,r1)*get_mi(f21,l2,r2)<<endl;
}
}
else if(get_mi(f21,l2,r2)==inf){
if(get_mi(g11,l1,r1)==inf){
cout<<get_mi(f11,l1,r1)*get_mi(g21,l2,r2)<<endl;
}
else{
cout<<get_mi(g11,l1,r1)*get_mx(g22,l2,r2)<<endl;
}
}
else{
cout<<max(get_mi(f11,l1,r1)*get_mi(g21,l2,r2)\
,get_mx(g12,l1,r1)*get_mx(f22,l2,r2))<<endl;
}
}
return 0;
}