#include<bits/stdc++.h>
using namespace std;
long long x[100000],h[100000];
long long n,m,q;
long long l1,r1,l2,r2;
long long xz,xf,x0;
long long hz,hf,h0;
long long x_minz()
{
long long ans=1000000;
for(int i=l1;i<=r1;i++)
if(x[i]>0)ans=min(ans,x[i]);
return ans;
}
long long x_minf()
{
long long ans=1000000;
for(int i=l1;i<=r1;i++)
if(x[i]<0)ans=min(ans,x[i]);
return ans;
}
long long x_maxz()
{
long long ans=-1000000;
for(int i=l1;i<=r1;i++)
if(x[i]>0)ans=max(ans,x[i]);
return ans;
}
long long x_maxf()
{
long long ans=-1000000;
for(int i=l1;i<=r1;i++)
if(x[i]<0)ans=max(ans,x[i]);
return ans;
}
long long h_minz()
{
long long ans=1000000;
for(int i=l2;i<=r2;i++)
if(h[i]>0)ans=min(ans,h[i]);
return ans;
}
long long h_minf()
{
long long ans=1000000;
for(int i=l2;i<=r2;i++)
if(h[i]<0)ans=min(ans,h[i]);
return ans;
}
long long h_maxz()
{
long long ans=-1000000;
for(int i=l2;i<=r2;i++)
if(h[i]>0)ans=max(ans,h[i]);
return ans;
}
long long h_maxf()
{
long long ans=-1000000;
for(int i=l2;i<=r2;i++)
if(h[i]<0)ans=max(ans,h[i]);
return ans;
}
void ycl()
{
xz=xf=x0=0;
for(int i=l1;i<=r1;i++)
{
if(x[i]>0)xz=1;
if(x[i]<0)xf=1;
if(x[i]==0)x0=1;
}
hz=hf=h0=0;
for(int i=l2;i<=r2;i++)
{
if(h[i]>0)hz=1;
if(h[i]<0)hf=1;
if(h[i]==0)h0=1;
}
return;
}
long long rui()
{
long long x1=0,h1=0;
if(!hf)
{
if(xz)
{
x1=x_maxz();
if(!h0) h1=h_minz();
}
else
{
if(!x0) x1=x_maxf();
h1=h_maxz();
}
}
else if(!hz)
{
if(xf)
{
x1=x_minf();
if(!h0) h1=h_maxf();
}
else
{
if(!x0)x1=x_minz();
h1=h_minf();
}
}
else
{
if(x0)
{
return 0;
}
else if(!xz)
{
x1=x_maxf();
h1=h_maxz();
}
else if(!xf)
{
x1=x_minz();
h1=h_minf();
}
else
{
return max(x_maxf()*h_maxz() , x_minz()*h_minf());
}
}
return x1*h1;
}
int main(){
cin>>n>>m>>q;
for(int i=1;i<=n;i++) cin>>x[i];
for(int i=1;i<=m;i++) cin>>h[i];
while(q--)
{
cin>>l1>>r1>>l2>>r2;
ycl();
cout<<rui()<<endl;
}
return 0;
}