#include<iostream>
using namespace std;
int father[10010];
int cnt[10010]={0};//计算每棵树上鸟的数目
bool exist[10010];
int findFather(int x){
int z=x;
while(x!=father[x])
x=father[x];
while(z!=father[z]){
int a=z;
z=father[z];
father[a]=x;
}
return x;
}
void Union(int a,int b){
int fa=findFather(a);
int fb=findFather(b);
if(fa!=fb) father[fa]=fb;
}
int main(){
for(int i=1;i<10010;i++)
father[i]=i;
int N,K,Q,first,next,a,b;
scanf("%d",&N);
for(int i=0;i<N;i++){//N幅图
scanf("%d%d",&K,&first);//每幅图里有K只鸟
exist[first]=true;
for(int j=1;j<K;j++){
scanf("%d",&next);
Union(first,next);
exist[next]=true;
}
}
for(int i=1;i<=10010;i++){
if(exist[i]==true)
cnt[findFather(i)]++;
}
int numTree=0,numBird=0;
for(int i=1;i<=10010;i++){
if(exist[i]==true&&cnt[i]!=0){
numTree++;
numBird+=cnt[i];
}
}
printf("%d %d\n",numTree,numBird);
scanf("%d",&Q);
for(int i=0;i<Q;i++){
scanf("%d%d",&a,&b);
printf("%s\n",findFather(a)==findFather(b)?"Yes":"No");
}
return 0;
}