#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int n,m,q,a[N],b[N],fmaxa[N][18],fmina[N][18],fmaxb[N][18],fminb[N][18],fusmina[N][18],fsmaxa[N][18],fusminb[N][18],fsmaxb[N][18];
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
fmaxa[i][0]=fmina[i][0]=a[i];
if(a[i]>=0) fusmina[i][0]=a[i],fsmaxa[i][0]=-1e9;
else fsmaxa[i][0]=a[i],fusmina[i][0]=1e9;
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
fmaxb[i][0]=fminb[i][0]=b[i];
if(b[i]>=0) fusminb[i][0]=b[i],fsmaxb[i][0]=-1e9;
else fsmaxb[i][0]=b[i],fusminb[i][0]=1e9;
}
for(int j=1;j<=17;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
fmaxa[i][j]=max(fmaxa[i][j-1],fmaxa[i+(1<<(j-1))][j-1]);
fmina[i][j]=min(fmina[i][j-1],fmina[i+(1<<(j-1))][j-1]);
fsmaxa[i][j]=max(fsmaxa[i][j-1],fsmaxa[i+(1<<(j-1))][j-1]);
fusmina[i][j]=min(fusmina[i][j-1],fusmina[i+(1<<(j-1))][j-1]);
}
for(int i=1;i+(1<<j)-1<=m;i++)
{
fmaxb[i][j]=max(fmaxb[i][j-1],fmaxb[i+(1<<(j-1))][j-1]);
fminb[i][j]=min(fminb[i][j-1],fminb[i+(1<<(j-1))][j-1]);
fsmaxb[i][j]=max(fsmaxb[i][j-1],fsmaxb[i+(1<<(j-1))][j-1]);
fusminb[i][j]=min(fusminb[i][j-1],fusminb[i+(1<<(j-1))][j-1]);
}
}
while(q--)
{
int l1,r1,l2,r2;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
int ka=log2(r1-l1+1),kb=log2(r2-l2+1);
ll maxa=max(fmaxa[l1][ka],fmaxa[r1-(1<<ka)+1][ka]),
mina=min(fmina[l1][ka],fmina[r1-(1<<ka)+1][ka]),
maxb=max(fmaxb[l2][kb],fmaxb[r2-(1<<kb)+1][kb]),
minb=min(fminb[l2][kb],fminb[r2-(1<<kb)+1][kb]),
smaxa=max(fsmaxa[l1][ka],fsmaxa[r1-(1<<ka)+1][ka]),
usmina=min(fusmina[l1][ka],fusmina[r1-(1<<ka)+1][ka]),
smaxb=max(fsmaxb[l2][kb],fsmaxb[r2-(1<<kb)+1][kb]),
usminb=min(fusminb[l2][kb],fusminb[r2-(1<<kb)+1][kb]);
if((maxa==mina&&mina==0)||(maxb==minb&&minb==0)) printf("%lld\n",0ll);
else if(mina>0&&minb>0) printf("%lld\n",maxa*minb);
else if(mina>0&&maxb<0) printf("%lld\n",mina*minb);
else if(mina>0&&maxb>0&&minb<0) printf("%lld\n",max(maxa*usminb,mina*minb));
else if(maxa<0&&minb>0) printf("%lld\n",maxa*maxb);
else if(maxa<0&&maxb<0) printf("%lld\n",mina*maxb);
else if(maxa<0&&maxb>0&&minb<0) printf("%lld\n",max(maxa*maxb,mina*smaxb));
else if(maxa>0&&mina<0&&minb>0) printf("%lld\n",max(maxa*minb,smaxa*maxb));
else if(maxa>0&&mina<0&&maxb<0) printf("%lld\n",max(usmina*minb,mina*maxb));
else if(maxa>0&&mina<0&&maxb>0&&minb<0) printf("%lld\n",max(max(maxa*usminb,smaxa*maxb),max(usmina*minb,mina*smaxb)));
}
return 0;
}