#include <bits/stdc++.h>
using namespace std;
int l[10007];
int r[10007];
int prelab[10007][507];
int suflab[10007][507];
int par[507];
int timkiem(int u) {
  if (par[u] < 0) return u;
  return par[u] = timkiem(par[u]);
}
void mege(int x, int y) {
  if ((x = timkiem(x)) == (y = timkiem(y))) return;
  if (par[y] < par[x]) swap(x, y);
  par[x] += par[y];
  par[y] = x;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= m; i++) cin >> l[i] >> r[i];
  memset(par, -1, sizeof(par));
  for (int i = 1; i <= n; i++) prelab[0][i] = -1;
  for (int i = 1; i <= m; i++) {
    for (int j = 1; j <= n; j++) prelab[i][j] = prelab[i - 1][j];
    int man = timkiem(l[i]);
    int tran = timkiem(r[i]);
    if (timkiem(l[i]) != timkiem(r[i])) {
      mege(l[i], r[i]);
      prelab[i][man] = par[man];
      prelab[i][tran] = par[tran];
    }
  }
  memset(par, -1, sizeof(par));
  for (int i = 1; i <= n; i++) suflab[m + 1][i] = -1;
  for (int i = m; i >= 1; i--) {
    for (int j = 1; j <= n; j++) suflab[i][j] = suflab[i + 1][j];
    int man = timkiem(l[i]);
    int tran = timkiem(r[i]);
    if (timkiem(l[i]) != timkiem(r[i])) {
      mege(l[i], r[i]);
      suflab[i][man] = par[man];
      suflab[i][tran] = par[tran];
    }
  }
  int k;
  cin >> k;
  while (k--) {
    int ll, rr;
    cin >> ll >> rr;
    memset(par, -1, sizeof(par));
    int dem = n;
    for (int i = 1; i <= n; i++) {
      int man = prelab[ll - 1][i];
      if (man > 0) {
        if (timkiem(i) != timkiem(man)) {
          dem--;
          mege(i, man);
        }
      }
    }
    for (int i = 1; i <= n; i++) {
      int man = suflab[rr + 1][i];
      if (man > 0) {
        if (timkiem(i) != timkiem(man)) {
          dem--;
          mege(i, man);
        }
      }
    }
    cout << dem << "\n";
  }
  return 0;
}
