#include <iostream>
#include <list>
using namespace std;
#define gc getchar_unlocked
#define pc putchar_unlocked
inline int scan(){register int n=0,c=gc();while(c<'0'||c>'9')c=gc();while(c<='9'&&c>='0')n=(n<<1)+(n<<3)+c-'0',c=gc();return n;}
class Graph
{
int V; // No. of vertices
list<int> *adj; // Pointer to an array containing adjacency lists
int DFSUtil(int a ,int b, bool visited[]); // A function used by DFS
public:
Graph(int V); // Constructor
void addEdge(int a ,int b); // function to add an edge to graph
int DFS(int a ,int b); // DFS traversal of the vertices reachable from v
};
Graph::Graph(int V)
{
this->V = V;
adj = new list<int>[V];
}
void Graph::addEdge(int v, int w)
{
adj[v].push_back(w);
adj[w].push_back(v);
}
int Graph::DFSUtil(int a, int b, bool visited[])
{
// Mark the current node as visited and print it
int ret=0;
visited[a] = true;
//out <<"Nodes= " << a <<"\n";
if(a == b) return 1;
// Recur for all the vertices adjacent to this vertex
list<int>::iterator i;
for(i = adj[a].begin(); i != adj[a].end(); ++i)
if(!visited[*i]){
ret = DFSUtil(*i,b, visited);
return ret;
}
}
int Graph::DFS(int a, int b)
{
// Mark all the vertices as not visited
bool *visited = new bool[V];
int ret=0;
for(int i = 0; i < V; i++)
visited[i] = false;
ret = DFSUtil(a,b,visited);
return ret;
}
int main()
{
// Create a graph given in the above diagram
int t,A,B,N,M,Q;
t=scan();
Graph g(200);
while(t--){
N=scan();
M=scan();
while(M--){
A=scan();
B=scan();
if(A<N && B<N) g.addEdge(A,B);
}
}
//
Q=scan();
while(Q--){
A=scan();
B=scan();
if(A<N && B<N){
if(g.DFS(A,B)==1)cout <<"YES\n";
else cout << "NO\n";
}
else cout << "NO\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiNkZWZpbmUgZ2MgZ2V0Y2hhcl91bmxvY2tlZAojZGVmaW5lIHBjIHB1dGNoYXJfdW5sb2NrZWQKaW5saW5lIGludCBzY2FuKCl7cmVnaXN0ZXIgaW50IG49MCxjPWdjKCk7d2hpbGUoYzwnMCd8fGM+JzknKWM9Z2MoKTt3aGlsZShjPD0nOScmJmM+PScwJyluPShuPDwxKSsobjw8MykrYy0nMCcsYz1nYygpO3JldHVybiBuO30gCgpjbGFzcyBHcmFwaAp7CiAgICBpbnQgVjsgICAgLy8gTm8uIG9mIHZlcnRpY2VzCiAgICBsaXN0PGludD4gKmFkajsgICAgLy8gUG9pbnRlciB0byBhbiBhcnJheSBjb250YWluaW5nIGFkamFjZW5jeSBsaXN0cwogICAgaW50IERGU1V0aWwoaW50IGEgLGludCBiLCBib29sIHZpc2l0ZWRbXSk7ICAvLyBBIGZ1bmN0aW9uIHVzZWQgYnkgREZTCnB1YmxpYzoKICAgIEdyYXBoKGludCBWKTsgICAvLyBDb25zdHJ1Y3RvcgogICAgdm9pZCBhZGRFZGdlKGludCBhICxpbnQgYik7ICAgLy8gZnVuY3Rpb24gdG8gYWRkIGFuIGVkZ2UgdG8gZ3JhcGgKICAgIGludCBERlMoaW50IGEgLGludCBiKTsgICAgLy8gREZTIHRyYXZlcnNhbCBvZiB0aGUgdmVydGljZXMgcmVhY2hhYmxlIGZyb20gdgp9OwogCkdyYXBoOjpHcmFwaChpbnQgVikKewogICAgdGhpcy0+ViA9IFY7CiAgICBhZGogPSBuZXcgbGlzdDxpbnQ+W1ZdOwp9CiAKdm9pZCBHcmFwaDo6YWRkRWRnZShpbnQgdiwgaW50IHcpCnsKICAgIGFkalt2XS5wdXNoX2JhY2sodyk7CiAgICBhZGpbd10ucHVzaF9iYWNrKHYpOwp9CiAKaW50IEdyYXBoOjpERlNVdGlsKGludCBhLCBpbnQgYiwgYm9vbCB2aXNpdGVkW10pCnsKICAgIC8vIE1hcmsgdGhlIGN1cnJlbnQgbm9kZSBhcyB2aXNpdGVkIGFuZCBwcmludCBpdAogICAgaW50IHJldD0wOwogICAgdmlzaXRlZFthXSA9IHRydWU7CiAgICAvL291dCA8PCJOb2Rlcz0gIiA8PCBhIDw8IlxuIjsKIAlpZihhID09IGIpIHJldHVybiAxOwogICAgLy8gUmVjdXIgZm9yIGFsbCB0aGUgdmVydGljZXMgYWRqYWNlbnQgdG8gdGhpcyB2ZXJ0ZXgKICAgIGxpc3Q8aW50Pjo6aXRlcmF0b3IgaTsKICAgIGZvcihpID0gYWRqW2FdLmJlZ2luKCk7IGkgIT0gYWRqW2FdLmVuZCgpOyArK2kpCiAgICAgICAgaWYoIXZpc2l0ZWRbKmldKXsKICAgICAgICAgICAgcmV0ID0gREZTVXRpbCgqaSxiLCB2aXNpdGVkKTsKICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgfQogICAgICAgICAKfQppbnQgR3JhcGg6OkRGUyhpbnQgYSwgaW50IGIpCnsKICAgIC8vIE1hcmsgYWxsIHRoZSB2ZXJ0aWNlcyBhcyBub3QgdmlzaXRlZAogICAgYm9vbCAqdmlzaXRlZCA9IG5ldyBib29sW1ZdOwogICAgaW50IHJldD0wOwogICAgZm9yKGludCBpID0gMDsgaSA8IFY7IGkrKykKICAgICAgICB2aXNpdGVkW2ldID0gZmFsc2U7CiAgICByZXQgPSBERlNVdGlsKGEsYix2aXNpdGVkKTsKICAgIHJldHVybiByZXQ7Cn0KIAppbnQgbWFpbigpCnsKICAgIC8vIENyZWF0ZSBhIGdyYXBoIGdpdmVuIGluIHRoZSBhYm92ZSBkaWFncmFtCiAgICBpbnQgdCxBLEIsTixNLFE7CiAgICB0PXNjYW4oKTsKICAgIEdyYXBoIGcoMjAwKTsKICAgIHdoaWxlKHQtLSl7CiAgICAJTj1zY2FuKCk7CiAgICAJTT1zY2FuKCk7CiAgICAJd2hpbGUoTS0tKXsKICAgIAkJQT1zY2FuKCk7CiAgICAJCUI9c2NhbigpOwogICAgCQlpZihBPE4gJiYgQjxOKSBnLmFkZEVkZ2UoQSxCKTsKICAgIAl9CiAgICB9CiAgICAvLwogICAgUT1zY2FuKCk7CiAgICB3aGlsZShRLS0pewogICAgQT1zY2FuKCk7CiAgICBCPXNjYW4oKTsKICAgIGlmKEE8TiAmJiBCPE4pewogICAgICBpZihnLkRGUyhBLEIpPT0xKWNvdXQgPDwiWUVTXG4iOwogICAgICBlbHNlIGNvdXQgPDwgIk5PXG4iOwogICAgfQogICAgZWxzZSBjb3V0IDw8ICJOT1xuIjsKICAgIH0KICAgIAogCiAgICByZXR1cm4gMDsKfQ==