#include <bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
int x=0;bool f=1;register char c=getchar();
while (c<48||c>57){if(c=='-') f=0;c=getchar();}
while (c>=48&&c<=57){x=x*10+(c^48);c=getchar();}
return f?x:-x;
}
const int inf=1e17;
int n,m,q,ap[100005][21],at[100005][21],ax[100005][21],ay[100005][21],bp[100005][21],bt[100005][21],x,l1,r1,l2,r2;
inline void iap() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=n;i++) ap[i][j]=max(ap[i][j-1],ap[i+(1<<(j-1))][j-1]);}
inline int qap(int l,int r) {int k=log2(r-l+1);return max(ap[l][k],ap[r-(1<<k)+1][k]);}
inline void iat() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=n;i++) at[i][j]=min(at[i][j-1],at[i+(1<<(j-1))][j-1]);}
inline int qat(int l,int r) {int k=log2(r-l+1);return min(at[l][k],at[r-(1<<k)+1][k]);}
inline void ibp() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=m;i++) bp[i][j]=max(bp[i][j-1],bp[i+(1<<(j-1))][j-1]);}
inline int qbp(int l,int r) {int k=log2(r-l+1);return max(bp[l][k],bp[r-(1<<k)+1][k]);}
inline void ibt() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=m;i++) bt[i][j]=min(bt[i][j-1],bt[i+(1<<(j-1))][j-1]);}
inline int qbt(int l,int r) {int k=log2(r-l+1);return min(bt[l][k],bt[r-(1<<k)+1][k]);}
inline void iax() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=n;i++) ax[i][j]=min(ax[i][j-1],ax[i+(1<<(j-1))][j-1]);}
inline int qax(int l,int r) {int k=log2(r-l+1);return min(ax[l][k],ax[r-(1<<k)+1][k]);}
inline void iay() {for (register int j=1;j<=21;j++) for (register int i=1;i+(1<<j)-1<=n;i++) ay[i][j]=max(ay[i][j-1],ay[i+(1<<(j-1))][j-1]);}
inline int qay(int l,int r) {int k=log2(r-l+1);return max(ay[l][k],ay[r-(1<<k)+1][k]);}
signed main(){
n=read(),m=read(),q=read();
for (register int i=1;i<=n;i++){
x=read();
ap[i][0]=at[i][0]=x;
if (x>=0) x-=inf,ax[i][0]=x,x+=inf;
else ax[i][0]=x;
if (x<=0) x+=inf;
ay[i][0]=x;
}
for (register int i=1;i<=m;i++){
x=read();
bp[i][0]=bt[i][0]=x;
}
iap(),iat(),ibp(),ibt(),iax(),iay();
while (q--){
l1=read(),r1=read(),l2=read(),r2=read();
int aMax=qap(l1,r1),aMin=qat(l1,r1),bMax=qbp(l2,r2),bMin=qbt(l2,r2);
int aMinp=qax(l1,r1),aMaxt=qay(l1,r1);
if (aMinp<-1e10) aMinp+=inf;
if (aMaxt>1e10) aMaxt-=inf;
int ans=-inf,mode[5]={0,aMax,aMin,aMinp,aMaxt};
for (register int i=1;i<=4;i++){
if (i==3&&mode[i]<0) continue;
if (i==4&&mode[i]>0) continue;
ans=max(ans,mode[i]*=mode[i]>=0?bMin:bMax);
}
cout<<ans<<'\n';
}
return 0;
}
Record