#include<bits/stdc++.h>
using namespace std;
#define int long long
//1.如果1只有负数,2只有负数,那么1选最小,2选最大
//2.如果1只有正数,2只有正数,那么1选最大,2选最小
//3.如果1有正有负,2只有负数,那么1选最小,2选最大
//4.如果1有正有负,2只有正数,那么1选最大,2选最小
//5.如果1只有负数,2有正有负,那么1选最大,2选最大
//6.如果1只有正数,2有正有负,那么1选最小,2选最小
//7.如果1有正有负,2有正有负,那么max((1正数的最小,2最小),(1负数的最大,2最大))
//1和3可以合并: 2只有负数,那么1选最小,2选最大
//2和4可以合并:2只有正数,那么1选最大,2选最小
int n,m,q;
int zamin[500050][21];
int famax[500050][21];
int amax[500050][21];
int amin[500050][21];
int bmax[500050][21];
int bmin[500050][21];
int l1,r1,l2,r2;
int maxa,maxb,mina,minb,minza,maxfa;
int len1,len2;
signed main()
{
//freopen("game3.in","r",stdin);
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
cin>>amax[i][0];
amin[i][0]=amax[i][0];
//如果是正数 ,这里把0也判断为正数
if (amax[i][0]>=0)
{
zamin[i][0]=amax[i][0];
famax[i][0]=LONG_LONG_MIN;//因为此时是正数,所以没有负数
}
else
{
zamin[i][0]=LONG_LONG_MAX;//因为没有正数
famax[i][0]=amax[i][0];
}
}
for(int i=1;i<=m;i++)
{
cin>>bmax[i][0];
bmin[i][0]=bmax[i][0];
}
for(int j=1;j<=20;j++){
for(int i=1;i<=n;i++){
if (i+(1<<(j-1))<=n)
{
amax[i][j]=max(amax[i][j-1],amax[i+(1<<(j-1))][j-1]);
famax[i][j]=max(famax[i][j-1],famax[i+(1<<(j-1))][j-1]);
amin[i][j]=min(amin[i][j-1],amin[i+(1<<(j-1))][j-1]);
zamin[i][j]=min(zamin[i][j-1],zamin[i+(1<<(j-1))][j-1]);
}
}
}
for(int j=1;j<=20;j++){
for(int i=1;i<=m;i++){
if (i+(1<<(j-1))<=m)
{
bmax[i][j]=max(bmax[i][j-1],bmax[i+(1<<(j-1))][j-1]);
bmin[i][j]=min(bmin[i][j-1],bmin[i+(1<<(j-1))][j-1]);
}
}
}
while(q--)
{
cin>>l1>>r1>>l2>>r2;
len1=log2(r1-l1+1);
len2=log2(r2-l2+1);
maxa=max(amax[l1][len1],amax[r1-(1<<len1)+1][len1]);
mina=min(amin[l1][len1],amin[r1-(1<<len1)+1][len1]);
minza=min(zamin[l1][len1],zamin[r1-(1<<len1)+1][len1]);
maxfa=max(famax[l1][len1],famax[r1-(1<<len1)+1][len1]);
maxb=max(bmax[l2][len2],bmax[r2-(1<<len2)+1][len2]);
minb=min(bmin[l2][len2],bmin[r2-(1<<len2)+1][len2]);
//1和3可以合并: 2只有负数,那么1选最小,2选最大
if(maxb<=0) cout<<mina*maxb<<'\n';
//2和4可以合并:2只有正数,那么1选最大,2选最小
else if (minb>=0) cout<<maxa*minb<<'\n';
//5.如果1只有负数,2有正有负,那么1选最大,2选最大
else if (maxa<=0) cout<<maxa*maxb<<'\n';
//6.如果1只有正数,2有正有负,那么1选最小,2选最小
else if (mina>=0) cout<<mina*minb<<'\n';
//7.如果1有正有负,2有正有负,那么max((1正数的最小,2最小),(1负数的最大,2最大))
else cout<<max(minza*minb,maxfa*maxb)<<'\n';
}
return 0;
}