#include <bits/stdc++.h>
#define int long long
#define log(n) log2(n)
using namespace std;
const int INF=1e18;
int n,m,q,Max[100010][21],Min[100010][21],Mxx[100010][21],Mnn[100010][21],Mbx[100010][21],Mbn[100010][21];
signed main()
{
// freopen("game4.in","r",stdin);
// freopen("game4.out","w",stdout);
cin>>n>>m>>q;
for(int i=1,x;i<=n;i++)
{
cin>>x;
Max[i][0]=Min[i][0]=x;
Mxx[i][0]=(x>=0?-INF:x);
Mnn[i][0]=(x<0?INF:x);//Max,Min为最值,Mxx为负数最大值,Mnn为正数最小值
}
for(int i=1,x;i<=m;i++)
{
cin>>x;
Mbx[i][0]=Mbn[i][0]=x;
}
for(int i=1;i<=log(n);i++)
{
for(int j=1;j<=n-(1<<i)+1;j++)
{
Max[j][i]=max(Max[j][i-1],Max[j+(1<<(i-1))][i-1]);
Mxx[j][i]=max(Mxx[j][i-1],Mxx[j+(1<<(i-1))][i-1]);
Min[j][i]=min(Min[j][i-1],Min[j+(1<<(i-1))][i-1]);
Mnn[j][i]=min(Mnn[j][i-1],Mnn[j+(1<<(i-1))][i-1]);
}
}
for(int i=1;i<=log(m);i++)
{
for(int j=1;j<=m-(1<<i)+1;j++)
{
Mbx[j][i]=max(Mbx[j][i-1],Mbx[j+(1<<(i-1))][i-1]);
Mbn[j][i]=min(Mbn[j][i-1],Mbn[j+(1<<(i-1))][i-1]);
}
}
while(q--)
{
int l1,l2,r1,r2;
cin>>l1>>r1>>l2>>r2;
int la=log(r1-l1+1),lb=log(r2-l2+1),ans=-INF;
int StMax=max(Max[l1][la],Max[r1-(1<<la)+1][la]);
int StMin=min(Min[l1][la],Min[r1-(1<<la)+1][la]);
int StMxx=max(Mxx[l1][la],Mxx[r1-(1<<la)+1][la]);
int StMnn=min(Mnn[l1][la],Mnn[r1-(1<<la)+1][la]);
int StMbx=max(Mbx[l2][lb],Mbx[r2-(1<<lb)+1][lb]);
int StMbn=min(Mbn[l2][lb],Mbn[r2-(1<<lb)+1][lb]);
ans=max(ans,StMax*(StMax>=0?StMbn:StMbx));
ans=max(ans,StMin*(StMin>=0?StMbn:StMbx));
ans=max(ans,StMxx*(StMxx>=0?StMbn:StMbx));
ans=max(ans,StMnn*(StMnn>=0?StMbn:StMbx));
cout<<ans<<"\n";
}
return 0;
}
谢谢