#include <cstdio>
#include <iostream>
#include <cmath>
#define ll long long
using namespace std;
const int MAX=100010;
const ll MAXX=pow(2,63)-1;
ll n,m,q,l1,r1,l2,r2;
ll lg[MAX],fa_ma[MAX][20],fa_mi[MAX][20],fb_ma[MAX][20],fb_mi[MAX][20];
ll a_max,a_min,b_max,b_min;
int main()
{
scanf("%lld%lld%lld",&n,&m,&q);
lg[1]=0;
for(int i=2;i<=max(m,n);i++) lg[i]=lg[i>>1]+1;
for(int i=1;i<=n;i++)
{
scanf("%lld",&fa_ma[i][0]);
fa_mi[i][0]=fa_ma[i][0];
}
for(int j=1;j<=lg[n];j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
fa_ma[i][j]=max(fa_ma[i][j-1],fa_ma[i+(1<<(j-1))][j-1]);
fa_mi[i][j]=min(fa_mi[i][j-1],fa_mi[i+(1<<(j-1))][j-1]);
}
}
for(int i=1;i<=m;i++)
{
scanf("%lld",&fb_ma[i][0]);
fb_mi[i][0]=fb_ma[i][0];
}
for(int j=1;j<=lg[m];j++)
{
for(int i=1;i+(1<<j)-1<=m;i++)
{
fb_ma[i][j]=max(fb_ma[i][j-1],fb_ma[i+(1<<(j-1))][j-1]);
fb_mi[i][j]=min(fb_mi[i][j-1],fb_mi[i+(1<<(j-1))][j-1]);
}
}
for(int i=1;i<=q;i++)
{
scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
int pa=lg[r1-l1+1],pb=lg[r2-l2+1];
a_max=max(fa_ma[l1][pa],fa_ma[r1-(1<<pa)+1][pa]);
a_min=min(fa_mi[l1][pa],fa_mi[r1-(1<<pa)+1][pa]);
b_max=max(fb_ma[l2][pb],fb_ma[r2-(1<<pb)+1][pb]);
b_min=min(fb_mi[l2][pb],fb_mi[r2-(1<<pb)+1][pb]);
if(a_min>=0)
{
if(b_min>=0) printf("%lld\n",a_max*b_min);
else if(b_max<=0) printf("%lld\n",a_min*b_min);
else printf("%lld\n",b_min*a_min);
}
else if(a_max<=0)
{
if(b_min>=0) printf("%lld\n",b_max*a_max);
else if(b_max<=0) printf("%lld\n",a_min*b_max);
else printf("%lld\n",b_max*a_max);
}
else
{
if(b_min>=0) printf("%lld\n",a_max*b_min);
else if(b_max<=0) printf("%lld\n",a_min*b_max);
else
{
int flag=0;
for(int i=l1;i<=r1;i++)
{
if(fa_ma[i][0]==0)
{
flag=1;
break;
}
}
if(flag==1)
{
printf("0\n");
continue;
}
int a_mi_=-MAXX,a_ma_=MAXX;
for(int i=l1;i<=r1;i++)
{
if(fa_ma[i][0]<0&&fa_ma[i][0]>a_mi_) a_mi_=fa_ma[i][0];
if(fa_ma[i][0]>0&&fa_ma[i][0]<a_ma_) a_ma_=fa_ma[i][0];
}
printf("%lld\n",-min(-a_mi_*b_max,-a_ma_*b_min));
}
}
}
return 0;
}