#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
#define mn 100010
#define ml 1000
#define minn -0x7f7f7f7f
#define maxx 0x7f7f7f7f
#define ll long long
inline int read(){
int x=0,f=1;
char ch=getchar();
while('0'>ch || ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while('0'<=ch && ch<='9'){
x=x*10+(ch-'0');
ch=getchar();
}
return x*f;
};
int n,m,q;
ll amiz[ml],amif[ml],amaz[ml],amaf[ml],a[mn],az[mn];
int al[ml],ar[ml],af[mn];
ll bmiz[ml],bmif[ml],bmaz[ml],bmaf[ml],b[mn],bz[mn];
int bl[ml],br[ml],bf[mn];
ll smiz(int l,int r,bool opt){//1Ϊa,0Ϊb
ll ans=maxx;
if(opt){
if(af[l]==af[r]){
for(int i=l;i<=r;i++)
if(a[i]>=0) ans=min(ans,a[i]);
}else{
int pn=af[l],pm=af[r];
for(int i=l;i<=ar[pn];i++)
if(a[i]>=0) ans=min(ans,a[i]);
for(int i=r;i>=al[pm];i--)
if(a[i]>=0) ans=min(ans,a[i]);
for(int i=pn+1;i<pm;i++)
if(amiz[i]!=maxx) ans=min(amiz[i],ans);
}
}else{
if(bf[l]==bf[r]){
for(int i=l;i<=r;i++)
if(b[i]>=0) ans=min(ans,b[i]);
}else{
int pn=bf[l],pm=bf[r];
for(int i=l;i<=br[pn];i++)
if(b[i]>=0) ans=min(ans,b[i]);
for(int i=r;i>=al[pm];i--)
if(b[i]>=0) ans=min(ans,b[i]);
for(int i=pn+1;i<pm;i++)
if(bmiz[i]!=maxx) ans=min(bmiz[i],ans);
}
}
return ans;
};
ll smif(int l,int r,bool opt){//1Ϊa,0Ϊb
ll ans=maxx;
if(opt){
if(af[l]==af[r]){
for(int i=l;i<=r;i++)
if(a[i]<0) ans=min(ans,a[i]);
}else{
int pn=af[l],pm=af[r];
for(int i=l;i<=ar[pn];i++)
if(a[i]<0) ans=min(ans,a[i]);
for(int i=r;i>=al[pm];i--)
if(a[i]<0) ans=min(ans,a[i]);
for(int i=pn+1;i<pm;i++)
if(amif[i]!=maxx) ans=min(amif[i],ans);
}
}else{
if(bf[l]==bf[r]){
for(int i=l;i<=r;i++)
if(b[i]<0) ans=min(ans,b[i]);
}else{
int pn=bf[l],pm=bf[r];
for(int i=l;i<=br[pn];i++)
if(b[i]<0) ans=min(ans,b[i]);
for(int i=r;i>=al[pm];i--)
if(b[i]<0) ans=min(ans,b[i]);
for(int i=pn+1;i<pm;i++)
if(bmif[i]!=maxx) ans=min(bmif[i],ans);
}
}
return ans;
};
ll smaz(int l,int r,bool opt){
ll ans=minn;
if(opt){
if(af[l]==af[r]){
for(int i=l;i<=r;i++)
if(a[i]>=0) ans=max(ans,a[i]);
}else{
int pn=af[l],pm=af[r];
for(int i=l;i<=ar[pn];i++)
if(a[i]>=0) ans=max(ans,a[i]);
for(int i=al[pm];i<=r;i++)
if(a[i]>=0) ans=max(ans,a[i]);
for(int i=pn+1;i<pm;i++){
if(amaz[i]!=minn) ans=max(ans,amaz[i]);
}
}
}else{
if(bf[l]==bf[r]){
for(int i=l;i<=r;i++)
if(b[i]>=0) ans=max(ans,b[i]);
}else{
int pn=bf[l],pm=bf[r];
for(int i=l;i<=br[pn];i++)
if(b[i]>=0) ans=max(ans,b[i]);
for(int i=al[pm];i<=r;i++)
if(b[i]>=0) ans=max(ans,b[i]);
for(int i=pn+1;i<pm;i++){
if(bmaz[i]!=minn) ans=max(ans,bmaz[i]);
}
}
}
return ans;
};
ll smaf(int l,int r,bool opt){
ll ans=minn;
if(opt){
if(af[l]==af[r]){
for(int i=l;i<=r;i++)
if(a[i]<0) ans=max(ans,a[i]);
}else{
int pn=af[l],pm=af[r];
for(int i=l;i<=ar[pn];i++)
if(a[i]<0) ans=max(ans,a[i]);
for(int i=al[pm];i<=r;i++)
if(a[i]<0) ans=max(ans,a[i]);
for(int i=pn+1;i<pm;i++){
if(amaf[i]!=minn) ans=max(ans,amaf[i]);
}
}
}else{
if(bf[l]==bf[r]){
for(int i=l;i<=r;i++)
if(b[i]<0) ans=max(ans,b[i]);
}else{
int pn=bf[l],pm=bf[r];
for(int i=l;i<=br[pn];i++)
if(b[i]<0) ans=max(ans,b[i]);
for(int i=al[pm];i<=r;i++)
if(b[i]<0) ans=max(ans,b[i]);
for(int i=pn+1;i<pm;i++){
if(bmaf[i]!=minn) ans=max(ans,bmaf[i]);
}
}
}
return ans;
};
int main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
n=read();m=read();q=read();
int tn=(int)sqrt(n),tm=(int)sqrt(m);
int xn=0;
for(int i=1;i<=n;i++){
a[i]=read();
if(i%tn==1){
xn++;al[xn]=i;amiz[xn]=maxx;amif[xn]=maxx;
amaz[xn]=minn;amaf[xn]=minn;
}
ar[xn]=i;af[i]=xn;
if(a[i]>=0){
amaz[xn]=max(amaz[xn],a[i]);
amiz[xn]=min(amiz[xn],a[i]);
}else{
amaf[xn]=max(amaf[xn],a[i]);
amif[xn]=min(amif[xn],a[i]);
}
}
xn=0;
for(int i=1;i<=m;i++){
b[i]=read();
if(i%tm==1){
xn++;bl[xn]=i;bmiz[xn]=maxx;bmif[xn]=maxx;
bmaz[xn]=minn;bmaf[xn]=minn;
}
br[xn]=i;bf[i]=xn;
if(b[i]>=0){
bmaz[xn]=max(bmaz[xn],b[i]);
bmiz[xn]=min(bmiz[xn],b[i]);
}else{
bmaf[xn]=max(bmaf[xn],b[i]);
bmif[xn]=min(bmif[xn],b[i]);
}
}
for(int i=0;i<q;i++){
int ln=read(),rn=read(),lm=read(),rm=read();
ll ans=minn;
ll amifn,amizn,amafn,amazn;
ll bmifn,bmizn,bmafn,bmazn;
amifn=smif(ln,rn,1);amizn=smiz(ln,rn,1);
amafn=smaf(ln,rn,1);amazn=smaz(ln,rn,1);
bmifn=smif(lm,rm,0);bmizn=smiz(lm,rm,0);
bmafn=smaf(lm,rm,0);bmazn=smaz(lm,rm,0);
if(bmifn==maxx){
if(amazn==minn) ans=amafn*bmazn;
else ans=amazn*bmizn;
}
if(bmazn==minn){
if(amifn==maxx) ans=amizn*bmifn;
else ans=amifn*bmafn;
}
if(bmifn!=maxx && bmazn!=minn){
if(amazn==minn) ans=amafn*bmazn;
if(amifn==maxx) ans=amizn*bmafn;
if(amifn!=maxx && amazn!=minn){
ans=max(amizn*bmifn,amafn*bmazn);
}
}
printf("%lld\n",ans);
}
return 0;
}