#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, m, Q;
int line[N], ans[N];
vector<pair<int, int> > q[N];
struct Seq {
  int mx1[N * 4], mx2[N * 4], tagx[N * 4], tagy[N * 4];
  void pushup(int u) {
    if (mx1[u << 1] == mx1[u << 1 | 1]) {
      mx1[u] = mx1[u << 1];
      mx2[u] = max(mx2[u << 1], mx2[u << 1 | 1]);
      return;
    }
    mx1[u] = mx1[u << 1];
    mx2[u] = mx1[u << 1 | 1];
    if (mx1[u] < mx2[u]) swap(mx1[u], mx2[u]);
  }
  void build(int u, int l, int r) {
    tagx[u] = N;
    tagy[u] = 0;
    if (l == r) {
      mx1[u] = 0;
      mx2[u] = -1;
      return;
    }
    int mid = (l + r) >> 1;
    build(u << 1, l, mid);
    build(u << 1 | 1, mid + 1, r);
    pushup(u);
  }
  void covr(int u, int x, int y) {
    if (mx1[u] < x) return;
    mx1[u] = y;
    tagx[u] = min(tagx[u], x);
    tagy[u] = y;
  }
  void pushdown(int u) {
    if (tagy[u])
      covr(u << 1, tagx[u], tagy[u]), covr(u << 1 | 1, tagx[u], tagy[u]),
          tagx[u] = N, tagy[u] = 0;
  }
  void upd(int u, int l, int r, int ul, int ur, int x, int y) {
    if (l >= ul && r <= ur && mx2[u] < x) {
      covr(u, x, y);
      return;
    }
    int mid = (l + r) >> 1;
    pushdown(u);
    if (mid >= ul) upd(u << 1, l, mid, ul, ur, x, y);
    if (mid < ur) upd(u << 1 | 1, mid + 1, r, ul, ur, x, y);
    pushup(u);
  }
  int qval(int u, int l, int r, int x) {
    if (l == r) return mx1[u];
    int mid = (l + r) >> 1;
    pushdown(u);
    return mid >= x ? qval(u << 1, l, mid, x) : qval(u << 1 | 1, mid + 1, r, x);
  }
} qt;
int main() {
  int x, y;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) scanf("%d%d", &x, &y), line[y] = x;
  scanf("%d", &Q);
  for (int i = 1; i <= Q; i++)
    scanf("%d%d", &x, &y), q[y].push_back(make_pair(x, i));
  qt.build(1, 1, n);
  for (int i = 1; i <= n; i++) {
    if (line[i]) qt.upd(1, 1, n, 1, line[i], line[i], i);
    qt.upd(1, 1, n, i, i, 0, i);
    for (int j = 0; j < q[i].size(); j++)
      ans[q[i][j].second] = qt.qval(1, 1, n, q[i][j].first);
  }
  for (int i = 1; i <= Q; i++) printf("%d\n", ans[i]);
  return 0;
}
