#include <bits/stdc++.h>
using namespace std;
long long int n,m,q,sum[100010][3];
long long int l1,l2,r1,r2;
long long int ans[100010];
struct p{
long long int i,c;
}a[100010],b[100010];
bool bmp(p st1,p st2){
return st1.i<st2.i;
}
bool cmp(p st1,p st2){
return st1.c<st2.c;
}
int main(){
cin>>n>>m>>q;
for(long long int i=1;i<=n;i++){
cin>>a[i].c;a[i].i=i;
if(!a[i].c)sum[i][1]=sum[i-1][1]+1;
else sum[i][1]=sum[i-1][1];
}
for(long long int i=1;i<=m;i++){
cin>>b[i].c;b[i].i=i;
if(!b[i].c)sum[i][2]=sum[i-1][2]+1;
else sum[i][2]=sum[i-1][2];
}
for(long long int i=1;i<=q;i++){
sort(a+1,a+n+1,bmp); sort(b+1,b+m+1,bmp);
cin>>l1>>r1>>l2>>r2;
long long int flag1=sum[r1][1]-sum[l1-1][1],flag2=sum[r2][2]-sum[l2-1][2];
sort(a+l1,a+r1+1,cmp); sort(b+l2,b+r2+1,cmp);
if(l1==r1){
if(flag1)ans[i]=0;
else{
if(a[l1].c<0){
ans[i]=a[l1].c*b[r2].c;
}else{
if(!flag2&&b[l2].c>0)ans[i]=a[r1].c*b[l2].c;
else ans[i]=a[l1].c*b[l2].c;
}
}
}else{
if(l2==r2){
if(flag2)ans[i]=0;
else{
if(b[l2].c<0)ans[i]=a[l1].c*b[l2].c;
else ans[i]=a[r1].c*b[l2].c;
}
}
if(a[l1].c>0&&b[l2].c>0){
ans[i]=a[r1].c*b[l2].c;
}
}
}
for(long long int i=1;i<=q;i++)cout<<ans[i]<<endl;
return 0;
}