#include<bits/stdc++.h>
using namespace std;
long long c1[100010],c2[100010],dp1[100010][23],dp2[100010][23],dp3[100010][23],dp4[100010][23],dp5[100010][23],dp6[100010][23];
int main()
{
freopen("gam*e.in","r",stdin);
freopen("game.out","w",stdout);
int a,b,T;
cin>>a>>b>>T;
int k = log2(a);
for(int i = 1;i<=a;i++)
{
cin>>c1[i];
for(int j = 0;j<=k;j++)
{
dp1[i][j]=-1e18-7;
dp3[i][j]=-1e18-7;
dp2[i][j]=1e18+7;
dp4[i][j]=1e18+7;
}
}
for(int i = 1;i<=b;i++)
{
cin>>c2[i];
for(int j = 0;j<=k;j++)
{
dp5[i][j]=-1e18-7;
dp6[i][j]=1e18+7;
}
}
for(int i = 1;i<=a;i++)
{
if(c1[i]>=0)
{
dp1[i][0]=c1[i];
dp2[i][0]=c1[i];
}
else
{
dp3[i][0]=c1[i];
dp4[i][0]=c1[i];
}
}
for(int i = 1;i<=k;i++)
{
for(int j = 1;j<=a-(1<<i)+1;j++)
{
dp1[j][i]=max(dp1[j][i-1],dp1[j+(1<<(i-1))][i-1]);
dp3[j][i]=max(dp3[j][i-1],dp3[j+(1<<(i-1))][i-1]);
dp2[j][i]=min(dp2[j][i-1],dp2[j+(1<<(i-1))][i-1]);
dp4[j][i]=min(dp4[j][i-1],dp4[j+(1<<(i-1))][i-1]);
}
}
for(int i = 1;i<=b;i++)
{
dp5[i][0]=c2[i];
dp6[i][0]=c2[i];
}
for(int i = 1;i<=k;i++)
{
for(int j = 1;j<=b-(1<<i)+1;j++)
{
dp5[j][i]=max(dp5[j][i-1],dp5[j+(1<<(i-1))][i-1]);
dp6[j][i]=min(dp6[j][i-1],dp6[j+(1<<(i-1))][i-1]);
}
}
while(T--)
{
int d,e,f,g;
scanf("%d%d%d%d",&d,&e,&f,&g);
int o = log2(e-d+1);
int p = log2(g-f+1);
long long ans1 = 1e18+7,ans2 = ans1,ans3=ans1,ans4=ans1;
if(max(dp1[d][o],dp1[e-(1<<o)+1][o])!=-1e18-7)
{
ans1=min(max(dp1[d][o],dp1[e-(1<<o)+1][o])*max(dp5[f][p],dp5[g-(1<<p)+1][p]),max(dp1[d][o],dp1[e-(1<<o)+1][o])*min(dp6[f][p],dp6[g-(1<<p)+1][p]));
}
if(max(dp3[d][o],dp3[e-(1<<o)+1][o])!=-1e18-7)
{
ans2=min(max(dp3[d][o],dp3[e-(1<<o)+1][o])*max(dp5[f][p],dp5[g-(1<<p)+1][p]),max(dp3[d][o],dp3[e-(1<<o)+1][o])*min(dp6[f][p],dp6[g-(1<<p)+1][p]));
}
if(min(dp2[d][o],dp2[e-(1<<p)+1][o])!=1e18+7)
{
ans3=min(min(dp2[d][o],dp2[e-(1<<p)+1][o])*max(dp5[f][p],dp5[g-(1<<p)+1][p]),min(dp2[d][o],dp2[e-(1<<p)+1][o])*min(dp6[f][p],dp6[g-(1<<p)+1][p]));
}
if(min(dp4[d][o],dp4[e-(1<<p)+1][o])!=1e18+7)
{
ans4=min(min(dp4[d][o],dp4[e-(1<<p)+1][o])*max(dp5[f][p],dp5[g-(1<<p)+1][p]),min(dp4[d][o],dp4[e-(1<<p)+1][o])*min(dp6[f][p],dp6[g-(1<<p)+1][p]));
}
if(ans1==1e18+7)
{
ans1=-1e18-7;
}
if(ans2==1e18+7)
{
ans2=-1e18-7;
}
if(ans3==1e18+7)
{
ans3=-1e18-7;
}
if(ans4==1e18+7)
{
ans4=-1e18-7;
}
cout <<max(ans1,max(ans2,max(ans3,ans4)))<<endl;
}
return 0;
}
qwq想了好久