import java.util.Scanner;
public class Main{
static int n,m,t;
static int []pre;
static void init(int m) {
pre=new int[m+1];
for(int i=0;i<=m;i++) {
pre[i]=i;
}
}
static int find(int x) {
if(pre[x]==x) return x;
return pre[x]=find(pre[x]);
}
static void merge(int x,int y) {
int fx=find(x);
int fy=find(y);
if(fx==fy) return;
pre[fx]=fy;
}
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
init(n);
for(int i=0;i<m;i++) {
int a1=sc.nextInt();
int a2=sc.nextInt();
merge(a1, a2);
}
t=sc.nextInt();
for(int i=0;i<t;i++) {
int b1=sc.nextInt();
int b2=sc.nextInt();
if(find(b2)==find(b1))System.out.println("Yes");
else System.out.println("No");
}
}
}
/**************************************************************
Problem: 2237
User: admin
Language: Java
Result: Accepted
Time:5078 ms
Memory:91868 kb
****************************************************************/