#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+5;
const int inf=2e18;
int a[maxn],b[maxn],st1[maxn][50],st2[maxn][50],st3[maxn][50],st4[maxn][50],st5[maxn][50],st6[maxn][50];
int n,m,q;
inline int read(){
register int x = 0, t = 1;
register char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
t=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x = x * 10 + ch - '0';
ch=getchar();
}
return x*t;
}
void st_create(){
for(int i=1;i<=n;i++){
st1[i][0]=a[i];
st2[i][0]=a[i];
if(a[i]>=0){
st3[i][0]=inf;
}
else{
st3[i][0]=a[i];
}
if(a[i]<0){
st4[i][0]=-inf;
}
else{
st4[i][0]=a[i];
}
}
for(int i=1;i<=m;i++){
st5[i][0]=b[i];
st6[i][0]=b[i];
}
for(int j=1;(1<<j)<=n;j++){
for(int i=1;i<=n-(1<<j-1)+1;i++){
st1[i][j]=max(st1[i][j-1],st1[i+(1<<j-1)][j-1]);
st2[i][j]=min(st2[i][j-1],st2[i+(1<<j-1)][j-1]);
st3[i][j]=max(st3[i][j-1],st3[i+(1<<j-1)][j-1]);
st4[i][j]=min(st4[i][j-1],st4[i+(1<<j-1)][j-1]);
}
}
for(int j=1;(1<<j)<=m;j++){
for(int i=1;i<=m-(1<<j-1)+1;i++){
st5[i][j]=max(st5[i][j-1],st5[i+(1<<j-1)][j-1]);
st6[i][j]=min(st6[i][j-1],st6[i+(1<<j-1)][j-1]);
}
}
}
signed main(){
n=read();m=read();q=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=m;i++){
b[i]=read();
}
st_create();
for(int i=1;i<=q;i++){
int l1,r1,l2,r2;
int k1,k2;
l1=read();r1=read();l2=read();r2=read();
k1=log2(r1-l1+1);
k2=log2(r2-l2+1);
int x1,x2,x3,x4,x5,x6;
x1=max(st1[l1][k1],st1[r1-(1<<k1)+1][k1]);
x2=min(st2[l1][k1],st2[r1-(1<<k1)+1][k1]);
x3=max(st3[l1][k1],st3[r1-(1<<k1)+1][k1]);
x4=min(st4[l1][k1],st4[r1-(1<<k1)+1][k1]);
x5=max(st5[l2][k2],st5[r2-(1<<k2)+1][k2]);
x6=min(st6[l2][k2],st6[r2-(1<<k2)+1][k2]);
int ans1=-inf,ans2=-inf,ans3=-inf,ans4=-inf;
if(x1>=0)
ans1=x1*x6;
if(x2<inf)
ans2=x2*x6;
if(x3>-inf)
ans3=x3*x5;
if(x4<0)
ans4=x4*x5;
cout<<max(ans1,max(ans2,max(ans3,ans4)))<<'\n';
}
return 0;
}