#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,q;
ll a[100005],b[100005],l1,r1,l2,r2;
ll st_a_min[100005][17],st_a_max[100005][17],st_b_min[100005][17],st_b_max[100005][17],st_a_neg_max[100005][17],st_a_pos_min[100005][17];
ll lg_2[100005];
int main(){
freopen("game/game1.in","r",stdin);
freopen("game/game1.out","w",stdout);
lg_2[1]=0;
for(int i=2;i<=100000;i++)lg_2[i]=lg_2[i>>1]+1;
cin>>n>>m>>q;
for(int i=1;i<=n;i++){cin>>a[i];st_a_max[i][0]=st_a_min[i][0]=a[i];}
for(int i=1;i<=lg_2[n];i++)for(int j=1;j+(1<<i)-1<=n;j++){
st_a_max[j][i]=max(st_a_max[j][i>>1],st_a_max[j+(1<<(i-1))][i>>1]);
st_a_min[j][i]=min(st_a_min[j][i>>1],st_a_min[j+(1<<(i-1))][i>>1]);
}
for(int i=1;i<=m;i++){cin>>b[i];st_b_max[i][0]=st_b_min[i][0]=b[i];}
for(int i=1;i<=lg_2[m];i++)for(int j=1;j+(1<<i)-1<=m;j++){
st_b_max[j][i]=max(st_b_max[j][i>>1],st_b_max[j+(1<<(i-1))][i>>1]);
st_b_min[j][i]=min(st_b_min[j][i>>1],st_b_min[j+(1<<(i-1))][i>>1]);
}
for(int i=1;i<=n;i++){
if(a[i]>=0)st_a_neg_max[i][0]=LLONG_MIN;
else st_a_neg_max[i][0]=a[i];
if(a[i]<0)st_a_pos_min[i][0]=LLONG_MAX;
else st_a_pos_min[i][0]=a[i];
}
for(int i=1;i<=lg_2[n];i++)for(int j=1;j+(1<<i)-1<=n;j++){
st_a_neg_max[j][i]=max(st_a_neg_max[j][i>>1],st_a_neg_max[j+(1<<(i-1))][i>>1]);
st_a_pos_min[j][i]=min(st_a_pos_min[j][i>>1],st_a_pos_min[j+(1<<(i-1))][i>>1]);
}
while(q--){
cin>>l1>>r1>>l2>>r2;
ll min_a=min(st_a_min[l1][lg_2[r1-l1+1]],st_a_min[r1-(1<<lg_2[r1-l1+1])+1][lg_2[r1-l1+1]]);
ll max_a=max(st_a_max[l1][lg_2[r1-l1+1]],st_a_max[r1-(1<<lg_2[r1-l1+1])+1][lg_2[r1-l1+1]]);
ll min_b=min(st_b_min[l2][lg_2[r2-l2+1]],st_b_min[r2-(1<<lg_2[r2-l2+1])+1][lg_2[r2-l2+1]]);
ll max_b=max(st_b_max[l2][lg_2[r2-l2+1]],st_b_max[r2-(1<<lg_2[r2-l2+1])+1][lg_2[r2-l2+1]]);
ll min_pos_a=min(st_a_pos_min[l1][lg_2[r1-l1+1]],st_a_pos_min[r1-(1<<lg_2[r1-l1+1])+1][lg_2[r1-l1+1]]);
ll max_neg_a=max(st_a_neg_max[l1][lg_2[r1-l1+1]],st_a_neg_max[r1-(1<<lg_2[r1-l1+1])+1][lg_2[r1-l1+1]]);
ll ans=LLONG_MIN;
ans=max(ans,max_a*((max_a>=0)?min_b:max_b));
ans=max(ans,min_a*((min_a>=0)?min_b:max_b));
if(min_pos_a!=LLONG_MAX)ans=max(ans,min_pos_a*((min_pos_a>=0)?min_b:max_b));
if(max_neg_a!=LLONG_MIN)ans=max(ans,max_neg_a*((max_neg_a>=0)?min_b:max_b));
cout<<ans<<endl;
}
}