#include <bits/stdc++.h>
#define re register
#define ll long long
#define _for(i, a, b) for (re int i = (int)(a); i <= (int)(b); i ++ )
using namespace std;
const int N = 1e5 + 5, M = 20, inf = 0x7f7f7f7f;
int n, m, Q, l, r, L, R, A[N], B[N], pw[M], bel[N];
ll ans, s[N], p[4][N][M], q[4][N][M];
inline ll calc(ll (& a)[4][(int)1e5 + 5][20], int o, int al, int ar) {
int k = bel[ar - al + 1];
if ((! o) || o == 3) return min(a[o][al][k], a[o][ar - pw[k] + 1][k]);
return max(a[o][al][k], a[o][ar - pw[k] + 1][k]);
}
signed main() {
ios :: sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n >> m >> Q;
_for (i, 1, n) cin >> A[i];
_for (i, 1, m) cin >> B[i];
_for (i, 0, M - 1) pw[i] = (1 << i);
_for (i, 2, max(n, m)) bel[i] = bel[i >> 1] + 1;
_for (i, 1, n) {
p[0][i][0] = p[1][i][0] = A[i];
if (A[i] < 0) p[2][i][0] = A[i], p[3][i][0] = inf;
if (A[i] > 0) p[2][i][0] = - inf, p[3][i][0] = A[i];
if (! A[i]) p[2][i][0] = p[3][i][0] = 0;
}
_for (i, 1, m) {
q[0][i][0] = q[1][i][0] = B[i];
if (B[i] < 0) q[2][i][0] = B[i], q[3][i][0] = inf;
if (B[i] > 0) q[2][i][0] = - inf, q[3][i][0] = B[i];
if (! B[i]) q[2][i][0] = q[3][i][0] = 0;
}
_for (j, 1, M - 1) for (int i = 1; i + pw[j] - 1 <= n; i ++ )
p[0][i][j] = min(p[0][i][j - 1], p[0][i + pw[j - 1]][j - 1]),
p[1][i][j] = max(p[1][i][j - 1], p[1][i + pw[j - 1]][j - 1]),
p[2][i][j] = max(p[2][i][j - 1], p[2][i + pw[j - 1]][j - 1]),
p[3][i][j] = min(p[3][i][j - 1], p[3][i + pw[j - 1]][j - 1]);
_for (j, 1, M - 1) for (int i = 1; i + pw[j] - 1 <= m; i ++ )
q[0][i][j] = min(q[0][i][j - 1], q[0][i + pw[j - 1]][j - 1]),
q[1][i][j] = max(q[1][i][j - 1], q[1][i + pw[j - 1]][j - 1]),
q[2][i][j] = max(q[2][i][j - 1], q[2][i + pw[j - 1]][j - 1]),
q[3][i][j] = min(q[3][i][j - 1], q[3][i + pw[j - 1]][j - 1]);
while (Q -- ) {
cin >> l >> r >> L >> R, ans = - inf;
if (calc(q, 0, L, R) >= 0) {
if (calc(p, 1, l, r) > 0) ans = max(ans, calc(p, 1, l, r) * calc(q, 3, L, R));
else ans = max(ans, calc(p, 2, l, r) * calc(q, 1, L, R));
}
if (calc(q, 1, L, R) <= 0) {
if (calc(p, 0, l, r) < 0) ans = max(ans, calc(p, 0, l, r) * calc(q, 2, L, R));
else ans = max(ans, calc(p, 3, l, r) * calc(q, 0, L, R));
}
if (calc(q, 0, L, R) < 0 && calc(q, 1, L, R) > 0) {
if (! calc(p, 2, l, r)) ans = max(ans, 0ll);
if (calc(p, 1, l, r) <= 0) ans = max(ans, calc(p, 2, l, r) * calc(q, 1, L, R));
if (calc(p, 0, l, r) >= 0) ans = max(ans, calc(p, 3, l, r) * calc(q, 0, L, R));
if (calc(p, 0, l, r) < 0 && calc(p, 1, l, r) > 0) ans = max(ans, max(calc(p, 2, l, r) * calc(q, 1, L, R), calc(p, 3, l, r) * calc(q, 0, L, R)));
}
cout << ans << endl;
}
return 0;
}