#include <bits/stdc++.h>
using namespace std;
const int N = 5e+3+10;
int father[N];
int m, n , i , x , y , q;
int find(int x){ //用递归的实现
if(father[x] != x) father[x] = find(father[x]); //路径压缩
else return father[x];
}
void unionn(int r1,int r2){
father[r2] = r1;
}
int main(){
cin >> n >> m;
for (i = 1; i <= n; i++) father[i] = i; //建立新的集合,其仅有的成员是i
for (i = 1; i <= m; i++){
scanf("%d%d", &x, &y);
int r1 = find(x);
int r2 = find(y);
if (r1 != r2) unionn(r1,r2);
}
cin >> q;
for (i = 1; i <= q; i++){
scanf("%d%d",&x,&y);
if (find(x) == find(y)) printf("Yes\n");
else printf("No\n");
}
return 0;
}