rt
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const long long inf=1e18;
int n,m,q;
long long a[N],b[N];
long long sta1[N][23],sta2[N][23],sta3[N][23],sta4[N][23];//最小正,最大,最大负,最小
long long stb1[N][23],stb2[N][23],stb3[N][23],stb4[N][23];//最小正,最大,最大负,最小
void init()
{
for(int i=1;i<=n;i++)
{
sta2[i][0]=sta4[i][0]=a[i];
sta1[i][0]=(a[i]<0?inf:a[i]);
sta3[i][0]=(a[i]>0?-inf:a[i]);
}
for(int i=1;i<=m;i++)
{
stb2[i][0]=stb4[i][0]=b[i];
stb1[i][0]=(b[i]<0?inf:b[i]);
stb3[i][0]=(b[i]>0?-inf:b[i]);
}
for(int i=1;(1<<i)<=n;i++)
{
for(int j=1;j+(1<<i)<=n+1;j++)
{
sta2[j][i]=max(sta2[j][i-1],sta2[j+(1<<(i-1))][i-1]);
sta3[j][i]=max(sta3[j][i-1],sta3[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;(1<<i)<=n;i++)
{
for(int j=1;j+(1<<i)<=n+1;j++)
{
sta1[j][i]=min(sta1[j][i-1],sta1[j+(1<<(i-1))][i-1]);
sta4[j][i]=min(sta4[j][i-1],sta4[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;(1<<i)<=m;i++)
{
for(int j=1;j+(1<<i)<=m+1;j++)
{
stb2[j][i]=max(stb2[j][i-1],stb2[j+(1<<(i-1))][i-1]);
stb3[j][i]=max(stb3[j][i-1],stb3[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;(1<<i)<=m;i++)
{
for(int j=1;j+(1<<i)<=m+1;j++)
{
stb1[j][i]=min(stb1[j][i-1],stb1[j+(1<<(i-1))][i-1]);
stb4[j][i]=min(stb4[j][i-1],stb4[j+(1<<(i-1))][i-1]);
}
}
return;
}
long long minua(int l,int r)
{
int k=log2(r-l+1);
return min(sta1[l][k],sta1[r-(1<<k)+1][k]);
}
long long minda(int l,int r)
{
int k=log2(r-l+1);
return min(sta4[l][k],sta4[r-(1<<k)+1][k]);
}
long long maxua(int l,int r)
{
int k=log2(r-l+1);
return max(sta2[l][k],sta2[r-(1<<k)+1][k]);
}
long long maxda(int l,int r)
{
int k=log2(r-l+1);
return max(sta3[l][k],sta3[r-(1<<k)+1][k]);
}
long long minub(int l,int r)
{
int k=log2(r-l+1);
return min(stb1[l][k],stb1[r-(1<<k)+1][k]);
}
long long mindb(int l,int r)
{
int k=log2(r-l+1);
return min(stb4[l][k],stb4[r-(1<<k)+1][k]);
}
long long maxub(int l,int r)
{
int k=log2(r-l+1);
return max(stb2[l][k],stb2[r-(1<<k)+1][k]);
}
long long maxdb(int l,int r)
{
int k=log2(r-l+1);
return max(stb3[l][k],stb3[r-(1<<k)+1][k]);
}
int main()
{
//freopen("P8818_4.in","r",stdin);
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
init();
for(int i=1;i<=q;i++)
{
int l1,l2,r1,r2;//A有正有负 B负 C正
cin>>l1>>r1>>l2>>r2;
if(maxua(l1,r1)>=0&&maxub(l2,r2)>=0&&minda(l1,r1)<=0&&mindb(l2,r2)<=0)
{
cout<<max(minua(l1,r1)*mindb(l2,r2),maxda(l1,r1)*maxub(l2,r2))<<endl;
//cout<<minua(l1,r1)<<" "<<mindb(l2,r2)<<" "<<maxda(l1,r1)<<" "<<maxub(l2,r2)<<endl;
}//ab AA
else if(maxua(l1,r1)>=0&&minda(l1,r1)<=0&&maxub(l2,r2)<=0)// AB
{
cout<<minda(l1,r1)*maxdb(l2,r2)<<endl;
}
else if(maxua(l1,r1)>=0&&minda(l1,r1)<=0&&mindb(l2,r2)>=0)//AC
{
cout<<maxua(l1,r1)*minub(l2,r2)<<endl;
//cout<<maxua(l1,r1)<<" "<<minub(l2,r2)<<endl;
}
else if(maxua(l1,r1)<=0&&minda(l1,r1)<=0&&mindb(l2,r2)<=0)//BA
{
cout<<minda(l1,r1)*maxub(l2,r2)<<endl;
}
else if(minda(l1,r1)>=0&&minda(l1,r1)<=0&&mindb(l2,r2)<=0)//CA
{
cout<<minua(l1,r1)*mindb(l2,r2)<<endl;
}
else if(maxua(l1,r1)<=0&&maxub(l2,r2)<=0)//BB
{
cout<<minda(l1,r1)*maxdb(l2,r2)<<endl;
}
else if(minda(l1,r1)>=0&&mindb(l2,r2)>=0)//CC
{
cout<<maxua(l1,r1)*minub(l2,r2)<<endl;
}
else if(maxua(l1,r1)<=0&&mindb(l2,r2)>=0)//BC
{
cout<<maxda(l1,r1)*maxub(l2,r2)<<endl;
}
else//CB
{
cout<<minua(l1,r1)*mindb(l2,r2)<<endl;
}
}
return 0;
}