#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,k,x[100005],y[100005],l1,r1,l2,r2;
int stx1[100005][55],std1[100005][55];
int stx2[100005][55],std2[100005][55];
int nfx[100005][55],yfd[100005][55];
int a,b,c,d,sum[100005],sum2[100005],e,f;
int getd(int l,int r,int w){
int len=log2(r-l+1);
if(w==1)return max(std1[l][len],std1[r-(1<<len)+1][len]);
return max(std2[l][len],std2[r-(1<<len)+1][len]);
}
int getx(int l,int r,int w){
int len=log2(r-l+1);
if(w==1)return min(stx1[l][len],stx1[r-(1<<len)+1][len]);
return min(stx2[l][len],stx2[r-(1<<len)+1][len]);
}
int tox(int l,int r){
int len=log2(r-l+1);
return min(nfx[l][len],nfx[r-(1<<len)+1][len]);
}
int tod(int l,int r){
int len=log2(r-l+1);
return max(yfd[l][len],yfd[r-(1<<len)+1][len]);
}
int ft(int a,int b,int c,int d,int e,int f){
int cnt1=min(a*c,a*d);
int cnt2=min(b*c,b*d);
int cnt3=min(e*c,e*d);
int cnt4=min(f*c,f*d);
return max(max(cnt1,cnt2),max(cnt3,cnt4));
}
signed main () {
cin>>n>>m>>k;
for(int i=1;i<=n;i++)scanf("%lld",&x[i]);
for(int i=1;i<=m;i++)scanf("%lld",&y[i]);
for(int i=1;i<=n;i++){
stx1[i][0]=x[i];
std1[i][0]=x[i];
if(x[i]<0)yfd[i][0]=x[i];
else yfd[i][0]=-1e18;
if(x[i]>=0)nfx[i][0]=x[i];
else nfx[i][0]=1e18;
}
for(int i=1;i<=m;i++){
stx2[i][0]=y[i];
std2[i][0]=y[i];
}
for(int j=1;j<=log2(n);j++){
for(int i=1;i<=n-(1<<j)+1;i++){
stx1[i][j]=min(stx1[i][j-1],stx1[i+(1<<(j-1))][j-1]);
std1[i][j]=max(std1[i][j-1],std1[i+(1<<(j-1))][j-1]);
nfx[i][j]=min(nfx[i][j-1],nfx[i+(1<<(j-1))][j-1]);
yfd[i][j]=max(yfd[i][j-1],yfd[i+(1<<(j-1))][j-1]);
}
}
for(int j=1;j<=log2(m);j++){
for(int i=1;i<=m-(1<<j)+1;i++){
stx2[i][j]=min(stx2[i][j-1],stx2[i+(1<<(j-1))][j-1]);
std2[i][j]=max(std2[i][j-1],std2[i+(1<<(j-1))][j-1]);
}
}
for(int i=1;i<=k;i++){
scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
a=getx(l1,r1,1);
b=getd(l1,r1,1);
c=getx(l2,r2,2);
d=getd(l2,r2,2);
e=tox(l1,r1);
f=tod(l1,r1);
printf("%lld\n",ft(a,b,c,d,e,f));
}
return 0;
}