#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
int f=1,x=0;char c=getchar();
for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);
return x*f;
}
const int N=100005;
int n,m,q,flag=1,num,h[N],numl,hl[N];
int maxx,minn;
int a[N],b[N];
signed main(){
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
a[i]=read();
if(a[i]<=0) flag=0;
}
for(int i=1;i<=m;i++){
b[i]=read();
if(b[i]<=0) flag=0;
}
if(flag){
while(q--){
int l1=read(),r1=read(),l2=read(),r2=read();
maxx=-1e9,minn=1e9;
for(int i=l1;i<=r1;i++){
if(a[i]>maxx) maxx=a[i];
}
for(int i=l2;i<=r2;i++){
if(b[i]<minn) minn=b[i];
}
printf("%lld\n",maxx*minn);
}
}
else{
while(q--){
int l1=read(),r1=read(),l2=read(),r2=read();
maxx=-1e9,minn=1e9;
if(l1==r1){
if(a[l1]>0){
for(int i=l2;i<=r2;i++){
if(b[i]<minn) minn=b[i];
}
printf("%lld\n",a[l1]*minn);
}
else if(a[l1]==0) cout<<"0"<<endl;
else{
for(int i=l2;i<=r2;i++){
if(maxx<b[i]) maxx=b[i];
}
printf("%lld\n",a[l1]*maxx);
}
}
else if(l2==r2){
if(b[l2]>0){
for(int i=l1;i<=r1;i++){
if(a[i]>maxx) maxx=a[i];
}
printf("%lld\n",b[l2]*maxx);
}
else if(b[l2]==0) puts("0");
else{
for(int i=l1;i<=r1;i++){
if(a[i]<minn) minn=a[i];
}
printf("%lld\n",b[l2]*minn);
}
}
else{
num=0,numl=0;
bool pd=0,pdl=0;
int ll,rr,l,r;
for(int i=l2;i<=r2;i++){
num++;
if(b[i]==0) pd=1;
h[num]=b[i];
}
for(int i=l1;i<=r1;i++){
numl++;
if(a[i]==0) pdl=1;
hl[numl]=a[i];
}
sort(h+1,h+1+num);
sort(hl+1,hl+1+numl);
if(h[num]>0){
if(h[1]<0){
if(pdl) puts("0");
else{
for(int i=1;i<=num;i++){
if(h[i]<0 && h[i+1]>=0) l=h[i];
else if(h[i]>0 && h[i-1]<=0) r=h[i];
}
for(int i=1;i<=numl;i++){
if(hl[i]<0 && hl[i+1]>=0) ll=hl[i];
else if(hl[i]>0 && hl[i-1]<=0) rr=hl[i];
}
printf("%lld\n",max(ll*h[num],rr*h[1]));
}
}
else if(h[1]>0){
if(hl[numl]>0) printf("%lld\n",hl[numl]*h[1]);
else if(hl[numl]<0) printf("%lld\n",hl[numl]*h[num]);
else puts("0");
}
else{
if(hl[numl]>0) puts("0");
else if(hl[numl]<0) printf("%lld\n",hl[numl]*h[num]);
else puts("0");
}
}
else{
if(hl[numl]<0){
if(pd) puts("0");
else printf("%lld\n",hl[1]*h[num]);
}
else if(hl[1]>0) printf("%lld\n",hl[1]*h[1]);
else if(hl[1]<0 && hl[numl]>0){
if(pd) puts("0");
else printf("%lld\n",h[num]*hl[1]);
}
else if(hl[1]==0) puts("0");
}
}
}
}
return 0;
}