#include<iostream>
using namespace std;
struct aa {
int ma = -0x3f3f3f3f;
int pi = 0x3f3f3f3f;
int na = -0x3f3f3f3f;
int mi = 0x3f3f3f3f;
};
struct bb {
int ma = -0x3f3f3f3f;
int mi = 0x3f3f3f3f;
};
aa treea[400100] = {};
bb treeb[400100] = {};
int a[100100] = {};
int b[100100] = {};
void build1(int l, int r, int id) {
if(l == r) {
treea[id].ma = a[l];
treea[id].mi = a[l];
if(a[l] >= 0) {
treea[id].pi = a[l];
}
else {
treea[id].na = a[l];
}
return;
}
else {
build1(l, (l + r) / 2, id << 1);
build1((l + r) / 2 + 1, r, id << 1 + 1);
int lc = id << 1;
int rc = id << 1 + 1;
treea[id].mi = min(treea[lc].mi, treea[rc].mi);
treea[id].ma = max(treea[lc].ma, treea[rc].ma);
treea[id].pi = min(treea[lc].pi, treea[rc].pi);
treea[id].na = max(treea[lc].na, treea[rc].na);
}
return;
}
void build2(int l, int r, int id) {
if(l == r) {
treeb[id].ma = b[l];
treeb[id].mi = b[l];
return;
}
else {
build1(l, (l + r) / 2, id << 1);
build1((l + r) / 2 + 1, r, id << 1 + 1);
int lc = id << 1;
int rc = id << 1 + 1;
treeb[id].mi = min(treeb[lc].mi, treeb[rc].mi);
treeb[id].ma = max(treeb[lc].ma, treeb[rc].ma);
}
return;
}
aa query1(int L, int R, int l, int r, int id) {
if(L <= l && R >= r) {
aa ans = treea[id];
return ans;
}
else {
int m = (l + r) >> 1;
aa lc;
aa rc;
if(L <= m) {
lc = query1(L, R, l, m, id << 1);
}
if(R > m) {
rc = query1(L, R, m + 1, r, id << 1 + 1);
}
aa ean;
ean.ma = max(lc.ma, rc.ma);
ean.pi = min(lc.pi, rc.pi);
ean.na = max(lc.na, rc.na);
ean.mi = min(lc.mi, rc.mi);
return ean;
}
}
bb query2(int L, int R, int l, int r, int id) {
if(L <= l && R >= r) {
bb ans = treeb[id];
return ans;
}
else {
int m = (l + r) >> 1;
bb lc;
bb rc;
if(L <= m) {
lc = query2(L, R, l, m, id << 1);
}
if(R > m) {
rc = query2(L, R, m + 1, r, id << 1 + 1);
}
bb ean;
ean.ma = max(lc.ma, rc.ma);
ean.mi = min(lc.mi, rc.mi);
return ean;
}
}
int main() {
int n = 0;
int m = 0;
int q = 0;
cin >> n >> m >> q;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
for (int i = 1; i <= m; ++i) {
cin >> b[i];
}
build1(1, n, 1);
build2(1, m, 1);
while(q--) {
int l1 = 0;
int r1 = 0;
int l2 = 0;
int r2 = 0;
cin >> l1 >> r1 >> l2 >> r2;
aa oa = query1(l1, r1, 1, n, 1);
bb ob = query2(l2, r2, 1, n, 1);
cout << oa.ma << " " << oa.mi << " " << oa.pi << " " << oa.na << endl;
cout << ob.mi << " " << ob.ma << "eee" << endl;
long long ans1 = oa.ma * ob.mi * 1ll;
long long ans2 = oa.mi * ob.ma * 1ll;
long long ans3 = -1000000000000000001;
long long ans4 = -1000000000000000001;
if(oa.na != -0x3f3f3f3f) {
ans3 = oa.na * ob.ma * 1ll;
}
if(oa.pi != 0x3f3f3f3f) {
ans4 = oa.pi * ob.mi * 1ll;
}
}
return 0;
}