#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 100100, M = 20, INF = 1e9;
int maxl[N][M], maxq[N][M], minl[N][M], minq[N][M];
int mip[N][M], man[N][M];
int Log[N];
int n, m, q;
int a[N], b[N];
void init(){
for(int i=2;i<N;i++) Log[i] = Log[i>>1]+1;
for(int j=0;j<M;j++)
for(int i=1;i+(1<<j)-1<=max(n,m);i++)
if(!j){
maxl[i][j] = minl[i][j] = a[i], maxq[i][j] = minq[i][j] = b[i];
if(a[i]>=0) mip[i][j] = a[i], man[i][j] = -INF;
else mip[i][j] = INF, man[i][j] = a[i];
}
else{
maxl[i][j] = max(maxl[i][j-1],maxl[i+(1<<j-1)][j-1]);
maxq[i][j] = max(maxq[i][j-1],maxq[i+(1<<j-1)][j-1]);
minl[i][j] = min(minl[i][j-1],minl[i+(1<<j-1)][j-1]);
minq[i][j] = min(minq[i][j-1],minq[i+(1<<j-1)][j-1]);
man[i][j] = max(man[i][j-1],man[i+(1<<j-1)][j-1]);
mip[i][j] = min(mip[i][j-1],mip[i+(1<<j-1)][j-1]);
}
}
int main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
init();
while(q--){
int l1, r1, l2, r2;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
int j1 = Log[r1-l1+1], j2 = Log[r2-l2+1];
int x0 = max(maxl[l1][j1],maxl[r1-(1<<j1)+1][j1]);
int x1 = min(minl[l1][j1],minl[r1-(1<<j1)+1][j1]);
int y0 = max(maxq[l2][j2],maxq[r2-(1<<j2)+1][j2]);
int y1 = min(minq[l2][j2],minq[r2-(1<<j2)+1][j2]);
if(x0<=0&&y0<=0) printf("%lld\n",(LL)x1*y0);
else if(x1>0&&y0<=0) printf("%lld\n",(LL)x1*y1);
else if(x0<=0&&y1>0) printf("%lld\n",(LL)x0*y0);
else if(x1>0&&y1>0) printf("%lld\n",(LL)x0*y1);
else if(x0>0&&x1<=0&&y0>0&&y1<=0){
int x = max(man[l1][j1],man[r1-(1<<j1)+1][j1]), y = min(mip[l1][j1],mip[r1-(1<<j1)+1][j1]);
if(abs(x)<abs(y)||(abs(x)==abs(y)&&abs(y0)<abs(y1))) printf("%lld\n",(LL)x*y0);
else printf("%lld\n",(LL)y*y1);
}
else if(x0>=0&&x1<=0&&y1>0) printf("%lld\n",(LL)x0*y1);
else if(x0>=0&&x1<=0&&y1<=0) printf("%lld\n",(LL)x1*y0);
else if(x1>0&&y0>=0&&y1<=0) printf("%lld\n",(LL)x1*y1);
else if(x1<=0&&y0>=0&&y1<=0) printf("%lld\n",(LL)x0*y0);
//else puts("???");
}
return 0;
}