#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int n,m,q;
int st1mn[N][18];
int st1mx[N][18];
int st2mn[N][18];
int st2mx[N][18];
int st3mn[N][18];
int st3mx[N][18];
int a[N],b[N];
int INF=1e9+7;
void Init(){
int logn=log2(n);
int logm=log2(m);
for(int j=0;j<=logn;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
if(j==0){
st1mn[i][j]=a[i];
st1mx[i][j]=a[i];
st3mn[i][j]=INF;
st3mx[i][j]=-INF;
if(a[i]>0){
st3mn[i][j]=a[i];
}
else if(a[i]<0){
st3mx[i][j]=a[i];
}
else{
st3mn[i][j]=a[i];
st3mx[i][j]=a[i];
}
continue;
}
st1mn[i][j]=min(st1mn[i][j-1],st1mn[i+(1<<(j-1))][j-1]);
st1mx[i][j]=max(st1mx[i][j-1],st1mx[i+(1<<(j-1))][j-1]);
st3mn[i][j]=min(st3mn[i][j-1],st3mn[i+(1<<(j-1))][j-1]);
st3mx[i][j]=max(st3mx[i][j-1],st3mx[i+(1<<(j-1))][j-1]);
}
}
for(int j=0;(1<<j)<=logm;j++){
for(int i=1;i+(1<<j)-1<=m;i++){
if(j==0){
st2mn[i][j]=b[i];
st2mx[i][j]=b[i];
continue;
}
st2mn[i][j]=min(st2mn[i][j-1],st2mn[i+(1<<(j-1))][j-1]);
st2mx[i][j]=max(st2mx[i][j-1],st2mx[i+(1<<(j-1))][j-1]);
}
}
return;
}
int find_mn1(int l,int r){
int k=log2(r-l+1);
int ans=min(st1mn[l][k],st1mn[r-(1<<k)+1][k]);
return ans;
}
int find_mn2(int l,int r){
int k=log2(r-l+1);
int ans=min(st2mn[l][k],st2mn[r-(1<<k)+1][k]);
return ans;
}
int find_mn3(int l,int r){
int k=log2(r-l+1);
int ans=min(st3mn[l][k],st3mn[r-(1<<k)+1][k]);
return ans;
}
int find_mx1(int l,int r){
int k=log2(r-l+1);
int ans=max(st1mx[l][k],st1mx[r-(1<<k)+1][k]);
return ans;
}
int find_mx2(int l,int r){
int k=log2(r-l+1);
int ans=max(st2mx[l][k],st2mx[r-(1<<k)+1][k]);
return ans;
}
int find_mx3(int l,int r){
int k=log2(r-l+1);
int ans=max(st3mx[l][k],st3mx[r-(1<<k)+1][k]);
return ans;
}
int main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=m;i++){
scanf("%d",&b[i]);
}
Init();
while(q--){
int l1,r1,l2,r2;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
int mn1=find_mn1(l1,r1);
int mx1=find_mx1(l1,r1);
int mn2=find_mn2(l2,r2);
int mx2=find_mx2(l2,r2);
int mn3=find_mn3(l1,r1);
int mx3=find_mx3(l1,r1);
long long ans=0;
if(mn1>=0){
if(mn2>=0){
ans=1ll*mx1*mn2;
}
else{
ans=1ll*mn3*mn2;
}
}
else if(mn1<=0 && mx1>=0){
if(mn2>=0){
ans=1ll*mx1*mn2;
}
else if(mn2<=0 && mx2>=0){
ans=max(1ll*mx3*mx2,1ll*mn3*mn2);
}
else{
ans=1ll*mn1*mx2;
}
}
else{
if(mx2>=0){
ans=1ll*mx3*mx2;
}
else{
ans=1ll*mn1*mx2;
}
}
printf("%lld\n",ans);
}
return 0;
}