#include<bits/stdc++.h>
#define int long long
#define Maxn 100005
using namespace std;
int f[4][Maxn][31],g[4][Maxn][31];
void init_mx(int n,int opt,int res[]) {
int k = log2(n);
for(int i=1;i<=n;i++)
f[opt][i][0] = res[i];
for(int j=1;j<=k;j++)
for(int i=1;i<=n-(1<<j)+1;i++)
f[opt][i][j] = max(f[opt][i][j-1],f[opt][i+(1<<(j-1))][j-1]);
}
void init_mn(int n,int opt,int res[]) {
int k = log2(n);
for(int i=1;i<=n;i++)
g[opt][i][0] = res[i];
for(int j=1;j<=k;j++)
for(int i=1;i<=n-(1<<j)+1;i++)
g[opt][i][j] = min(g[opt][i][j-1],g[opt][i+(1<<(j-1))][j-1]);
}
int Query_mx(int l, int r,int opt) {
int k = log2(r-l+1);
return max(f[opt][l][k], f[opt][r-(1<<k)+1][k]);
}
int Query_mn(int l, int r,int opt) {
int k = log2(r-l+1);
return min(g[opt][l][k], g[opt][r-(1<<k)+1][k]);
}
int a[Maxn],b[Maxn],res[Maxn];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m,q;
cin>>n>>m>>q;
for(int opt=0;opt<4;opt++)
for(int i=0;i<Maxn;i++)
for(int j=0;j<31;j++)
f[opt][i][j] = -INT_MAX;
for(int opt=0;opt<4;opt++)
for(int i=0;i<Maxn;i++)
for(int j=0;j<31;j++)
g[opt][i][j] = INT_MAX;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
res[i] = a[i];
init_mx(n,0,res);
for(int i=1;i<=n;i++)
if(a[i] < 0)res[i] = a[i];
else res[i] = -73998244353;
init_mx(n,1,res);
for(int i=1;i<=m;i++)
res[i] = b[i];
init_mx(m,2,res);
for(int i=1;i<=m;i++)
if(b[i] < 0)res[i] = b[i];
else res[i] = -73998244353;
init_mx(m,3,res);
for(int i=1;i<=n;i++)
res[i] = a[i];
init_mn(n,0,res);
for(int i=1;i<=n;i++)
if(a[i] >= 0)res[i] = a[i];
else res[i] = 73998244353;
init_mn(n,1,res);
for(int i=1;i<=m;i++)
res[i] = b[i];
init_mn(m,2,res);
for(int i=1;i<=m;i++)
if(b[i] >= 0)res[i] = b[i];
else res[i] = 73998244353;
init_mn(m,3,res);
while(q--) {
int l,r,L,R; cin>>l>>r>>L>>R;
int ans = -INT_MAX,res;
if(Query_mn(l,r,0) < 0) {
res = INT_MAX;
if(Query_mn(L,R,2)<0)
res=min(res,Query_mn(l,r,0)*Query_mn(L,R,2));
if(Query_mn(L,R,3)!=73998244353)
res=min(res,Query_mn(l,r,0)*Query_mn(L,R,3));
if(Query_mx(L,R,2)>=0)
res=min(res,Query_mn(l,r,0)*Query_mx(L,R,2));
if(Query_mx(L,R,3)!=-73998244353)
res=min(res,Query_mn(l,r,0)*Query_mx(L,R,3));
if(res != INT_MAX) ans = max(ans,res);
}
if(Query_mn(l,r,1) != 73998244353) {
res = INT_MAX;
if(Query_mn(L,R,2)<0)res=min(res,Query_mn(l,r,1)*Query_mn(L,R,2));
if(Query_mn(L,R,3)!=73998244353)res=min(res,Query_mn(l,r,1)*Query_mn(L,R,3));
if(Query_mx(L,R,2)>=0)res=min(res,Query_mn(l,r,1)*Query_mx(L,R,2));
if(Query_mx(L,R,3)!=-73998244353)res=min(res,Query_mn(l,r,1)*Query_mx(L,R,3));
if(res != INT_MAX) ans = max(ans,res);
}
if(Query_mx(l,r,0) >= 0){
res = INT_MAX;
if(Query_mn(L,R,2)<0)res=min(res,Query_mx(l,r,0)*Query_mn(L,R,2));
if(Query_mn(L,R,3)!=73998244353)res=min(res,Query_mx(l,r,0)*Query_mn(L,R,3));
if(Query_mx(L,R,2)>=0)res=min(res,Query_mx(l,r,0)*Query_mx(L,R,2));
if(Query_mx(L,R,3)!=-73998244353)res=min(res,Query_mx(l,r,0)*Query_mx(L,R,3));
if(res != INT_MAX) ans = max(ans,res);
}
if(Query_mx(l,r,1) != -73998244353) {
res = INT_MAX;
if(Query_mn(L,R,2)<0)res=min(res,Query_mx(l,r,1)*Query_mn(L,R,2));
if(Query_mn(L,R,3)!=73998244353)res=min(res,Query_mx(l,r,1)*Query_mn(L,R,3));
if(Query_mx(L,R,2)>=0)res=min(res,Query_mx(l,r,1)*Query_mx(L,R,2));
if(Query_mx(L,R,3)!=-73998244353)res=min(res,Query_mx(l,r,1)*Query_mx(L,R,3));
if(res != INT_MAX) ans = max(ans,res);
} cout<<ans<<"\n";
}
return 0;
}