#include<bits/stdc++.h>
using namespace std;
#define int long long
#define sp putchar(' ')
#define end putchar('\n')
#define INF 11451419111111111
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*10+ch-48;ch=getchar();}
return x*f;
}
int a[100009][30],b[100009][30],c[100009][30],d[100009][30],e[100009][30],f[100009][30];
signed main(){
int n=read(),m=read(),q=read();
bool bf=0,af=0;
for(int i=1;i<=n;i++){
a[i][0]=read();
if(a[i][0]==0) af=1;
f[i][0]=e[i][0]=c[i][0]=a[i][0];
if(a[i][0]>0) a[i][0]=INF;
if(c[i][0]>0) c[i][0]=-INF;
if(e[i][0]<0) e[i][0]=INF;
if(f[i][0]<0) f[i][0]=-INF;
}
for(int i=1;i<=m;i++){
b[i][0]=read();
d[i][0]=b[i][0];
}
for(int i=1;i<=29;i++){
for(int j=1;j<=n-(1<<i)+1;j++){
a[j][i]=min(a[j][i-1],a[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=29;i++){
for(int j=1;j<=n-(1<<i)+1;j++){
c[j][i]=max(c[j][i-1],c[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=29;i++){
for(int j=1;j<=n-(1<<i)+1;j++){
e[j][i]=min(e[j][i-1],e[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=29;i++){
for(int j=1;j<=n-(1<<i)+1;j++){
f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=29;i++){
for(int j=1;j<=m-(1<<i)+1;j++){
b[j][i]=min(b[j][i-1],b[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=29;i++){
for(int j=1;j<=m-(1<<i)+1;j++){
d[j][i]=max(d[j][i-1],d[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=q;i++){
int l=read(),r=read(),x=read(),y=read();
int tmp1=log2(r-l+1),tmp2=log2(y-x+1);
int ans=-INF;
int bmin=min(b[x][tmp2],b[y-(1<<tmp2)+1][tmp2]);
int bmax=max(d[x][tmp2],d[y-(1<<tmp2)+1][tmp2]);
int afmax=max(c[l][tmp1],c[r-(1<<tmp1)+1][tmp1]);
int azmax=max(f[l][tmp1],f[r-(1<<tmp1)+1][tmp1]);
int afmin=min(a[l][tmp1],a[r-(1<<tmp1)+1][tmp1]);
int azmin=min(e[l][tmp1],e[r-(1<<tmp1)+1][tmp1]);
if(afmin!=INF){
ans=max(ans,afmin*bmax);
}
if(azmin!=INF){
ans=max(ans,azmin*bmin);
}
if(afmax!=-INF){
ans=max(ans,afmax*bmax);
}
if(azmax!=-INF){
ans=max(ans,azmax*bmin);
}
printf("%lld\n",ans);
}
return 0;
}