#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int read() {
  int x = 0, f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 3) + (x << 1) + c - 48;
    c = getchar();
  }
  return x * f;
}
int to[maxn << 1], net[maxn << 1], h[maxn], e = 0;
inline void add(int x, int y) {
  to[++e] = y;
  net[e] = h[x];
  h[x] = e;
}
int dclock = 0, top = 0, color = 0;
int dfn[maxn], low[maxn], dep[maxn], f[maxn][21], v[maxn], odd[maxn], st[maxn],
    c[maxn], s[maxn];
inline void dfs(int x, int fa) {
  c[x] = color;
  f[x][0] = fa;
  dfn[x] = low[x] = ++dclock;
  dep[x] = dep[fa] + 1;
  v[x] = 1;
  st[++top] = x;
  for (register int i = 1; (1 << i) <= dep[x]; i++)
    f[x][i] = f[f[x][i - 1]][i - 1];
  for (register int i = h[x]; i; i = net[i]) {
    int y = to[i];
    if (y == fa) continue;
    if (!dfn[y]) {
      dfs(y, x);
      low[x] = min(low[x], low[y]);
    } else if (v[y]) {
      low[x] = min(low[x], low[y]);
      if (dep[x] % 2 == dep[y] % 2) odd[x] = 1;
    }
  }
  v[x] = 0;
  if (low[x] == dfn[x]) {
    bool flag = 0;
    for (register int i = top; i; i--) {
      if (st[i] == x) break;
      if (odd[st[i]]) {
        flag = 1;
        break;
      }
    }
    if (flag) {
      while (top && st[top] != x) {
        s[st[top]]++;
        v[st[top]] = 0;
        top--;
      }
      top--;
    } else {
      while (top && st[top] != x) {
        v[st[top]] = 0;
        top--;
      }
      top--;
    }
  }
}
int LCA(int x, int y) {
  if (dep[x] < dep[y]) swap(x, y);
  for (register int i = 20; i >= 0; i--)
    if (dep[f[x][i]] >= dep[y]) x = f[x][i];
  if (x == y) return x;
  for (register int i = 20; i >= 0; i--) {
    if (f[x][i] != f[y][i]) {
      x = f[x][i];
      y = f[y][i];
    }
  }
  return f[x][0];
}
inline void dfs1(int x) {
  for (register int i = h[x]; i; i = net[i]) {
    int y = to[i];
    if (f[y][0] == x) {
      s[y] += s[x];
      dfs1(y);
    }
  }
  return;
}
int k, m, n, t, root[maxn];
int main() {
  n = read();
  m = read();
  for (register int i = 1; i <= m; i++) {
    int x = read(), y = read();
    add(x, y);
    add(y, x);
  }
  for (register int i = 1; i <= n; i++) {
    if (!c[i]) {
      color++;
      dfs(i, 0);
      root[i] = 1;
    }
  }
  for (register int i = 1; i <= n; i++) {
    if (root[i]) dfs1(i);
  }
  t = read();
  for (register int i = 1; i <= t; i++) {
    int x = read(), y = read();
    if (c[x] == c[y]) {
      int lca = LCA(x, y);
      if ((dep[x] + dep[y] - 2 * dep[lca]) % 2 || (s[x] + s[y] - 2 * s[lca])) {
        puts("Yes");
        continue;
      }
    }
    puts("No");
  }
  return 0;
}
