#include<bits/stdc++.h>
using namespace std;
long long n,r1,l1,r2,l2,m,q,A[100001],B[100001],tst1[100001],tst2[100001],i,j;
int main()
{
scanf("%lld%lld%lld",&n,&m,&q);
for(i=1;i<=n;i++)
scanf("%lld",&A[i]);
for(i=1;i<=m;i++)
scanf("%lld",&B[i]);
long long lim_1,lim_2,lim_3,lim_4,max1,max2,min1,min2,ans1,ans2;
for(i=1;i<=q;i++)
{
ans1=0;
ans2=0;
lim_1=lim_2=10e9+1;
lim_3=lim_4=-10e9-1;
min1=min2=10e9+1;
max1=max2=-10e9-1;
scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
for(j=l1;j<=r1;j++)
{
if(A[j]>max1) max1=A[j];
if(A[j]<min1) min1=A[j];
if(abs(A[j])<abs(lim_1)&&A[j]>=0) lim_1=A[j];
if(abs(A[j])<abs(lim_3)&&A[j]<=0) lim_3=A[j];
}
for(j=l2;j<=r2;j++)
{
if(B[j]>max2) max2=B[j];
if(B[j]<min2) min2=B[j];
if(abs(B[j])<abs(lim_2)&&B[j]>=0) lim_2=B[j];
if(abs(B[j])<abs(lim_4)&&B[j]<=0) lim_4=B[j];
}
if((min1==0&&min2<0)||(min2>0&&min2==0)||(max1>0&&max2>0&&min1<0&&min2<0&&lim_1==0))
{
printf("0\n");
continue;
}
if(min1>0&&min2>0)
{
ans1=max1*min2;
printf("%lld\n",ans1);
continue;
}
if(min1>0&&min2<0)
{
ans1=min1*min2;
printf("%lld\n",ans1);
continue;
}
if(max1>0&&min1<0&&min2>0)
{
ans1=max1*min2;
printf("%lld\n",ans1);
continue;
}
if(max1>0&&max2>0&&min1<0&&min2<0)
{
ans1=lim_1*min2;
ans2=lim_3*max2;
printf("%lld\n",max(ans1,ans2));
continue;
}
if(max1>0&&min1<0&&max2<0)
{
ans1=min1*max2;
printf("%lld\n",ans1);
continue;
}
if(max1<0)
{
ans1=max1*max2;
printf("%lld\n",ans1);
continue;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}