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
****************************************************************/