#include<bits/stdc++.h>
using namespace std;
int const N=1e5+10;
int a[N],b[N];
int n,m,q;
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]);
}
int l1,r1,l2,r2;
for(int w=1;w<=q;w++)
{
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
if(l1!=r1&&l2!=r2)
{
int maxn=-INT_MAX,minn=INT_MAX;
for(int i=l1;i<=r1;i++)
{
maxn=max(maxn,a[i]);
}
for(int i=l2;i<=r2;i++)
{
minn=min(minn,b[i]);
}
printf("%lld\n",maxn*minn);
}else{
if(l1==r1)
{
if(a[l1]==0){
printf("0\n");
}else if(a[l1]>0)
{
int minn=INT_MAX;
for(int i=l2;i<=r2;i++)
{
minn=min(minn,b[i]);
}
printf("%lld\n",a[l1]*minn);
}else if(a[l1]<0)
{
int maxn=-INT_MAX;
for(int i=l2;i<=r2;i++)
{
maxn=max(maxn,b[i]);
}
printf("%lld\n",a[l1]*maxn);
}
}
if(l2==r2){
if(b[l2]==0)
{
printf("0\n");
}else if(b[l2]<0){
int minn=INT_MAX;
for(int i=l1;i<=r1;i++)
{
minn=min(minn,a[i]);
}
printf("%lld\n",minn*b[l2]);
}else if(b[l2]>0){
int maxn=-INT_MAX;
for(int i=l1;i<=r1;i++)
{
maxn=max(maxn,a[i]);
}
printf("%lld\n",maxn*b[l2]);
}
}
}
}
return 0;
}