#include <bits/stdc++.h>
using namespace std;
inline int rd() {
  register int res = 0, f = 1;
  register char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    res = (res << 1) + (res << 3) + c - '0';
    c = getchar();
  }
  return res * f;
}
int n, m, q;
struct edge {
  int to, nxt;
} e[300010 << 1];
int edgenum = 0;
int lin[300010] = {0};
void add(int a, int b) {
  e[++edgenum] = (edge){b, lin[a]};
  lin[a] = edgenum;
  e[++edgenum] = (edge){a, lin[b]};
  lin[b] = edgenum;
  return;
}
int dfn[300010], low[300010], tot = 0;
stack<int> s;
int minv[300010], maxv[300010], dcc = 0;
int f[300010];
long long sum[300010];
void tarjan(int k) {
  dfn[k] = low[k] = ++tot;
  s.push(k);
  for (int i = lin[k]; i != 0; i = e[i].nxt) {
    if (dfn[e[i].to] == 0) {
      tarjan(e[i].to);
      low[k] = min(low[k], low[e[i].to]);
      if (low[e[i].to] >= dfn[k]) {
        ++dcc;
        minv[dcc] = maxv[dcc] = k;
        int t;
        int cnt = 1;
        do {
          t = s.top();
          s.pop();
          minv[dcc] = min(minv[dcc], t);
          maxv[dcc] = max(maxv[dcc], t);
          ++cnt;
        } while (t != e[i].to);
        if (cnt != 2) f[minv[dcc]] = maxv[dcc] - 1;
      }
    } else {
      low[k] = min(low[k], dfn[e[i].to]);
    }
  }
  return;
}
long long calc(int L, int R) {
  int l = L - 1, r = R, mid;
  while (l < r) {
    mid = ((l + r + 1) >> 1);
    if (f[mid] <= R)
      l = mid;
    else
      r = mid - 1;
  }
  return (sum[l] - sum[L - 1] + 1ll * (R - l) * R) -
         1ll * (L + R - 2) * (R - L + 1) / 2;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; ++i) add(rd(), rd());
  for (int i = 1; i <= n; ++i) f[i] = n;
  for (int i = 1; i <= n; ++i) {
    if (dfn[i] == 0) tarjan(i);
  }
  for (int i = n - 1; i >= 1; --i) {
    f[i] = min(f[i], f[i + 1]);
  }
  for (int i = 1; i <= n; ++i) sum[i] = sum[i - 1] + f[i];
  int l, r;
  scanf("%d", &q);
  for (int i = 1; i <= q; ++i) {
    l = rd();
    r = rd();
    printf("%I64d\n", calc(l, r));
  }
  return 0;
}
