#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, K, Q; cin >> N >> K >> Q; vector>> blocks(N + 1); // 1-based indexing for (int k = 0; k < K; ++k) { int L, R, C, H; cin >> L >> R >> C >> H; for (int i = L; i <= R; ++i) { blocks[i].emplace_back(H, C); } } for (int q = 0; q < Q; ++q) { int I, X; cin >> I >> X; long long target = X - 0.5; auto& layers = blocks[I]; if (layers.empty()) { cout << "-1\n"; continue; } vector prefix = {0}; for (auto [h, c] : layers) { prefix.push_back(prefix.back() + h); } int lo = 1, hi = layers.size(); int ans = -1; while (lo <= hi) { int mid = (lo + hi) / 2; if (prefix[mid] > target) { ans = mid; hi = mid - 1; } else { lo = mid + 1; } } if (ans != -1 && prefix[ans - 1] <= target) { cout << layers[ans - 1].second << '\n'; } else { cout << "-1\n"; } } return 0; }