#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,q,a[100005],b[100005];
int Max[100005][20],Min[100005][20];
int MaxF[100005][20],MinZ[100005][20];
int Maxb[100005][20],Minb[100005][20];
int L[100005];
int Mx(int l,int r){
int x=L[r-l+1];
int ans=max(Max[l][x],Max[r-(1<<x)+1][x]);
return ans;
}
int Mn(int l,int r){
int x=L[r-l+1];
int ans=min(Min[l][x],Min[r-(1<<x)+1][x]);
return ans;
}
int Mxb(int l,int r){
int x=L[r-l+1];
int ans=max(Maxb[l][x],Maxb[r-(1<<x)+1][x]);
return ans;
}
int Mnb(int l,int r){
int x=L[r-l+1];
int ans=min(Minb[l][x],Minb[r-(1<<x)+1][x]);
return ans;
}
int MxF(int l,int r){
int x=L[r-l+1];
int ans=max(MaxF[l][x],MaxF[r-(1<<x)+1][x]);
return ans;
}
int MnZ(int l,int r){
int x=L[r-l+1];
int ans=min(MinZ[l][x],MinZ[r-(1<<x)+1][x]);
return ans;
}
signed main(){
freopen("game4.in","r",stdin);
freopen("a.out","w",stdout);
cin>>n>>m>>q;
for(int i=2;i<=100000;i++)
L[i]=L[i/2]+1;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
Max[i][0]=Min[i][0]=a[i];
if(a[i]<=0)MaxF[i][0]=a[i];
else MaxF[i][0]=-1e18;
if(a[i]>=0)MinZ[i][0]=a[i];
else MinZ[i][0]=1e18;
}
for(int i=1;i<=m;i++)
scanf("%lld",&b[i]),
Maxb[i][0]=Minb[i][0]=b[i];
for(int i=1;i<=19;i++)
for(int j=1;j<=n-(1<<i)+1;j++)
Max[j][i]=max(Max[j][i-1],Max[j+(1<<(i-1))][i-1]);
for(int i=1;i<=19;i++)
for(int j=1;j<=n-(1<<i)+1;j++)
Min[j][i]=min(Min[j][i-1],Min[j+(1<<(i-1))][i-1]);
for(int i=1;i<=19;i++)
for(int j=1;j<=n-(1<<i)+1;j++)
MaxF[j][i]=max(MaxF[j][i-1],MaxF[j+(1<<(i-1))][i-1]);
for(int i=1;i<=19;i++)
for(int j=1;j<=n-(1<<i)+1;j++)
MinZ[j][i]=min(MinZ[j][i-1],MinZ[j+(1<<(i-1))][i-1]);
for(int i=1;i<=19;i++)
for(int j=1;j<=m-(1<<i)+1;j++)
Maxb[j][i]=max(Maxb[j][i-1],Maxb[j+(1<<(i-1))][i-1]);
for(int i=1;i<=19;i++)
for(int j=1;j<=m-(1<<i)+1;j++)
Minb[j][i]=min(Minb[j][i-1],Minb[j+(1<<(i-1))][i-1]);
while(q--){
int l1,r1,l2,r2,ans=-1e18;
scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
if(Mnb(l2,r2)>=0){
ans=Mx(l1,r1)*Mnb(l2,r2);
}else if(Mxb(l2,r2)<=0){
ans=Mn(l1,r1)*Mxb(l2,r2);
}else{
ans=-1e18;
if(MnZ(l1,r1)!=1e18)ans=max(ans,MnZ(l1,r1)*Mnb(l2,r2));
if(MxF(l1,r1)!=-1e18)ans=max(ans,MxF(l1,r1)*Mxb(l2,r2));
}
printf("%lld\n",ans);
}
return 0;
}