#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXN = 100010;
const int NOAB = 1000000001;
const int NOBL = -1000000001;
int n, m, q;
int a[MAXN], b[MAXN];
int lg[MAXN];
int maxa[MAXN][33], mina[MAXN][33], maxb[MAXN][33], minb[MAXN][33];
int aba[MAXN][33], bla[MAXN][33];
int main(){
scanf("%d%d%d", &n, &m, &q);
lg[1] = 0;
int enddd = max(n, m);
for (int i = 2; i <= enddd; i++){
lg[i] = lg[i-1] + ((1 << (lg[i-1] + 1)) == i);
}
for (int i = 1; i <= n; i++){
scanf("%d", &a[i]);
maxa[i][0] = mina[i][0] = a[i];
if (a[i] >= 0){
aba[i][0] = a[i]; bla[i][0] = NOBL;
}
else{
bla[i][0] = a[i]; aba[i][0] = NOAB;
}
}
for (int i = 1; i <= m; i++){
scanf("%d", &b[i]);
maxb[i][0] = minb[i][0] = b[i];
}
for (int k = 1; k <= lg[n]; k++){
for (int i = 1; i + (1 << k) - 1 <= n; i++){
maxa[i][k] = max(maxa[i][k-1], maxa[i+(1<<(k-1))][k-1]);
bla[i][k] = max(bla[i][k-1], bla[i+(1<<(k-1))][k-1]);
mina[i][k] = min(mina[i][k-1], mina[i+(1<<(k-1))][k-1]);
aba[i][k] = min(aba[i][k-1], aba[i+(1<<(k-1))][k-1]);
}
}
for (int k = 1; k <= lg[m]; k++){
for (int i = 1; i + (1 << k) - 1 <= m; i++){
maxb[i][k] = max(maxb[i][k-1], maxb[i+(1<<(k-1))][k-1]);
minb[i][k] = min(minb[i][k-1], minb[i+(1<<(k-1))][k-1]);
}
}
int l1, r1, l2, r2;
int k1, k2;
int nowmaxa, nowmaxb, nowmina, nowminb, nowaba, nowbla, nowblb, nowabb;
while (q--){
scanf("%d%d%d%d", &l1, &r1, &l2, &r2);
k1 = lg[r1-l1+1];
k2 = lg[r2-l2+1];
nowmaxa = max(maxa[l1][k1], maxa[r1-(1<<k1)+1][k1]);
nowmina = min(mina[l1][k1], mina[r1-(1<<k1)+1][k1]);
nowbla = max(bla[l1][k1], bla[r1-(1<<k1)+1][k1]);
nowaba = min(aba[l1][k1], aba[r1-(1<<k1)+1][k1]);
nowmaxb = max(maxb[l2][k2], maxb[r2-(1<<k2)+1][k2]);
nowminb = min(minb[l2][k2], minb[r2-(1<<k2)+1][k2]);
if (nowminb > 0){
if (nowmaxa < 0){
printf("%lld\n", (ll) nowmaxa * nowmaxb);
}
else{
printf("%lld\n", (ll) nowmaxa * nowminb);
}
}
else if (nowmaxb < 0){
if (nowmina >= 0){
printf("%lld\n", (ll) nowmina * nowminb);
}
else{
printf("%lld\n", (ll) nowmina * nowmaxb);
}
}
else{
printf("%lld\n", max((ll) nowaba * nowminb, (ll) nowbla * nowmaxb));
}
}
return 0;
}