#include<bits/stdc++.h>
using namespace std;
vector<int> father,countn;
int findFather(int x){
int a=x;
while(x!=father[x]){
x=father[x];
}
while(a!=father[a]){
int z=a;
a=father[a];
father[z]=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(){
int n,k,q,a,b,c;
map<int,int> mp;
scanf("%d",&n);
int course[10001]={0};
father.resize(n+1);
countn.resize(n+1);
for(int i=1;i<=n;i++){
father[i]=i;
}
for(int i=1;i<=n;i++){
scanf("%d",&k);
while(k--){
scanf("%d",&a);
mp[a]++;
if(course[a]==0){
course[a]=i;
}
Union(i,findFather(course[a]));
}
}
for(int i=1;i<=n;i++){
countn[findFather(i)]++;
}
int cnt=0;
for(int i=1;i<=n;i++){
if(countn[i]!=0){
cnt++;
}
}
printf("%d %d\n",cnt,mp.size());
scanf("%d",&q);
for(int i=0;i<q;i++){
scanf("%d %d",&b,&c);
if(findFather(course[b])==findFather(course[c])){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}
06-11
246
