#include<iostream>#include<cstring>#include<sstream>#include<cmath>#include<cstdio>#include<algorithm>#include<vector>#include<set>usingnamespacestd;
#define MAX 2113set<int>list[51];
int main() {
int n;
int temp;
cin >> n;
for(int i = 0; i < n; i++) {
int m;
cin >> m;
for (int j = 0; j < m; j++) {
cin >> temp;
list[i].insert(temp);
}
}
int n2;
cin >> n2;
int mi, ma;
for (int i = 0; i < n2; i++) {
cin >> mi >> ma;
mi--;
ma--;
if (list[mi].size() > list[ma].size()) {
swap(mi, ma);
}
int nc = 0;
int size = list[mi].size();
int size2 = list[ma].size();
set<int>::iterator it;
for (it = list[mi].begin(); it != list[mi].end(); it++) {
if (list[ma].find(*it) != list[ma].end()) {
nc++;
}
}
int nt = size + size2 - nc;
printf("%.2lf%%\n", (double)((double)((double)nc/nt)*100.0));
}
return0;
}