#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return x*f;
}
const int maxn=1e5+5;
int n,m,q;
int fa1[20][maxn],fa2[20][maxn],fa3[20][maxn],fa4[20][maxn],fb1[20][maxn],fb4[20][maxn];
int ask1(int l,int r,int p,int q)
{
int k=log2(r-l+1);
if(p==1)
{
if(q>0) return max(fa1[k][l],fa1[k][r-(1<<k)+1]);
else return max(fa3[k][l],fa3[k][r-(1<<k)+1]);
}
else
{
if(q>0) return min(fa2[k][l],fa2[k][r-(1<<k)+1]);
else return min(fa4[k][l],fa4[k][r-(1<<k)+1]);
}
}
int ask2(int l,int r,int p)
{
int k=log2(r-l+1);
if(p==1) return max(fb1[k][l],fb1[k][r-(1<<k)+1]);
else return min(fb4[k][l],fb4[k][r-(1<<k)+1]);
}
int main()
{
n=read(),m=read(),q=read();
for(int i=0;i<=19;i++)
for(int j=1;j<=max(n,m);j++)
{
fa1[i][j]=fa3[i][j]=fb1[i][j]=INT_MIN;
fa2[i][j]=fa4[i][j]=fb4[i][j]=INT_MAX;
}
for(int i=1;i<=n;i++)
{
int tmp=read();
if(tmp>=0) fa1[0][i]=fa2[0][i]=tmp;
else fa3[0][i]=fa4[0][i]=tmp;
}
for(int i=1;i<=m;i++) fb1[0][i]=fb4[0][i]=read();
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j+(1<<i)-1<=n;j++)
{
fa1[i][j]=max(fa1[i-1][j],fa1[i-1][j+(1<<(i-1))]);
fa2[i][j]=min(fa2[i-1][j],fa2[i-1][j+(1<<(i-1))]);
fa3[i][j]=max(fa3[i-1][j],fa3[i-1][j+(1<<(i-1))]);
fa4[i][j]=min(fa4[i-1][j],fa4[i-1][j+(1<<(i-1))]);
}
for(int i=1;(1<<i)<=m;i++)
for(int j=1;j+(1<<i)-1<=m;j++)
{
fb1[i][j]=max(fb1[i-1][j],fb1[i-1][j+(1<<(i-1))]);
fb4[i][j]=min(fb4[i-1][j],fb4[i-1][j+(1<<(i-1))]);
}
for(int i=1;i<=q;i++)
{
int l1=read(),r1=read(),l2=read(),r2=read();
int x=ask1(l1,r1,1,1),y=ask1(l1,r1,-1,1),z=ask1(l1,r1,1,-1),w=ask1(l1,r1,-1,-1);
int c=ask2(l2,r2,1),d=ask2(l2,r2,-1);
ll ans=LLONG_MIN;
ans=max(ans,max(1ll*c*z,1ll*c*w));
ans=max(ans,max(1ll*d*x,1ll*d*y));
printf("%lld\n",ans);
}
return 0;
}