//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "o"
#define ff(i,a,b) for (auto i=(a); i<=(b); ++i)
#define ffr(i,b,a) for (auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)(s).size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a,x,sizeof(a))
#define cn continue
#define re exit(0)
typedef long long ll;
typedef vector<int> vi;
inline void rf(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr); if(fopen(file".inp","r")){freopen(file".inp","r",stdin);freopen(file".out","w",stdout);} }
struct Node{
vector<int> Lx, Rx;
vector<int> R_sorted; // x của nửa phải
vector<ll> prefCnt; // pref số phần tử trái có x > x_right_j
vector<int> all_sorted; // trộn cả hai nửa theo x (để lọc nhanh theo [Lx,Rx])
};
struct Seg{
int n;
vector<Node> t;
vector<int> yord, xof; // yord[i]=node theo y=i, xof[i]=x
Seg(){}
Seg(const vector<int>& xof_){build(xof_);}
void build(const vector<int>& xof_){
xof=xof_; n=1; while(n<(int)xof.size()) n<<=1;
t.assign(2*n, {});
for(int i=0;i<(int)xof.size();++i){
t[n+i].all_sorted={xof[i]};
}
for(int i=n-1;i>=1;--i){
auto &L=t[i<<1].all_sorted, &R=t[i<<1|1].all_sorted;
t[i].all_sorted.resize(sz(L)+sz(R));
merge(all(L),all(R),t[i].all_sorted.begin());
}
build_pairs(1,0,n-1);
}
void build_pairs(int p,int l,int r){
if(l==r){
t[p].R_sorted = t[p].all_sorted;
t[p].prefCnt.assign(sz(t[p].R_sorted)+1,0);
return;
}
int m=(l+r)>>1;
build_pairs(p<<1,l,m);
build_pairs(p<<1|1,m+1,r);
const auto &L=t[p<<1].all_sorted;
const auto &R=t[p<<1|1].all_sorted;
t[p].R_sorted = R;
t[p].prefCnt.assign(sz(R)+1,0);
int iL=sz(L)-1;
for(int i=0;i<sz(R);++i){
while(iL>=0 && L[iL]>R[i]) --iL;
t[p].prefCnt[i+1]=t[p].prefCnt[i]+(ll)(sz(L)-(iL+1));
}
}
inline ll count_pairs_node(int p,int Lx,int Rx){ // số cặp (x_left > x_right) với x_right in [Lx,Rx], x_left free trong node
const auto &R=t[p].R_sorted;
const auto &pref=t[p].prefCnt;
auto it1=lower_bound(all(R),Lx);
auto it2=upper_bound(all(R),Rx);
int l=it1-R.begin(), r=it2-R.begin();
if(l>=r) return 0;
return pref[r]-pref[l];
}
ll query(int l,int r,int Lx,int Rx){
l+=n; r+=n;
ll res=0;
vector<int> lefts, rights;
while(l<=r){
if(l&1) lefts.pb(l++);
if(!(r&1)) rights.pb(r--);
l>>=1; r>>=1;
}
for(int id:lefts) res += count_pairs_node(id,Lx,Rx);
for(int i=sz(rights)-1;i>=0;--i) res += count_pairs_node(rights[i],Lx,Rx);
return res;
}
};
int main(){
rf();
int n; if(!(cin>>n)) return 0;
vector<vi> g1(n), g2(n);
ff(i,0,n-1){
int d; cin>>d; g1[i].reserve(d);
ff(j,1,d){int x;cin>>x; g1[i].pb(x);}
}
ff(i,0,n-1){
int d; cin>>d; g2[i].reserve(d);
ff(j,1,d){int x;cin>>x; g2[i].pb(x);}
}
auto dfs=[&](const vector<vi>& g){
vi tin(n), tout(n), it(n,0); vector<char> vis(n,0);
vector<int> st; st.pb(0); int T=0;
while(!st.empty()){
int v=st.back();
if(!vis[v]){vis[v]=1; tin[v]=T++;}
if(it[v]<(int)g[v].size()){int u=g[v][it[v]++]; st.pb(u);}
else{tout[v]=T; st.pop_back();}
}
return pair<vi,vi>(tin,tout);
};
auto t1=dfs(g1), t2=dfs(g2);
vi tin1=t1.fi, tout1=t1.se, tin2=t2.fi, tout2=t2.se;
vi ordX(n); ff(v,0,n-1) ordX[tin1[v]]=v;
vi Xpos(n); ff(i,0,n-1) Xpos[ordX[i]]=i;
vi y2node(n); ff(v,0,n-1) y2node[tin2[v]]=v;
vector<int> XofY(n);
ff(y,0,n-1){int v=y2node[y]; XofY[y]=Xpos[v];}
Seg seg(XofY);
int q; cin>>q;
vector<string> ans(q);
ff(i,0,q-1){
int u,v; cin>>u>>v;
int Lx=tin1[u], Rx=tout1[u]-1;
int Ly=tin2[v], Ry=tout2[v]-1;
if(Lx>Rx || Ly>Ry){ ans[i]="YES"; cn; }
ll inv = seg.query(Ly,Ry,Lx,Rx);
ans[i]=(inv==0?"YES":"NO");
}
ff(i,0,q-1) cout<<ans[i]<<nl;
re;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAibyIKI2RlZmluZSBmZihpLGEsYikgZm9yIChhdXRvIGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBmZnIoaSxiLGEpIGZvciAoYXV0byBpPShiKTsgaT49KGEpOyAtLWkpCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHNzICIgIgojZGVmaW5lIHBiIGVtcGxhY2VfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgc3oocykgKGludCkocykuc2l6ZSgpCiNkZWZpbmUgYWxsKHMpIChzKS5iZWdpbigpLCAocykuZW5kKCkKI2RlZmluZSBtcyhhLHgpIG1lbXNldChhLHgsc2l6ZW9mKGEpKQojZGVmaW5lIGNuIGNvbnRpbnVlCiNkZWZpbmUgcmUgZXhpdCgwKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CgppbmxpbmUgdm9pZCByZigpe2lvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKG51bGxwdHIpO2NvdXQudGllKG51bGxwdHIpOyBpZihmb3BlbihmaWxlIi5pbnAiLCJyIikpe2ZyZW9wZW4oZmlsZSIuaW5wIiwiciIsc3RkaW4pO2ZyZW9wZW4oZmlsZSIub3V0IiwidyIsc3Rkb3V0KTt9IH0KCnN0cnVjdCBOb2RlewogICAgdmVjdG9yPGludD4gTHgsIFJ4OwogICAgdmVjdG9yPGludD4gUl9zb3J0ZWQ7IC8vIHggY+G7p2EgbuG7rWEgcGjhuqNpCiAgICB2ZWN0b3I8bGw+IHByZWZDbnQ7ICAgLy8gcHJlZiBz4buRIHBo4bqnbiB04butIHRyw6FpIGPDsyB4ID4geF9yaWdodF9qCiAgICB2ZWN0b3I8aW50PiBhbGxfc29ydGVkOyAvLyB0cuG7mW4gY+G6oyBoYWkgbuG7rWEgdGhlbyB4ICjEkeG7gyBs4buNYyBuaGFuaCB0aGVvIFtMeCxSeF0pCn07CgpzdHJ1Y3QgU2VnewogICAgaW50IG47CiAgICB2ZWN0b3I8Tm9kZT4gdDsKICAgIHZlY3RvcjxpbnQ+IHlvcmQsIHhvZjsgLy8geW9yZFtpXT1ub2RlIHRoZW8geT1pLCB4b2ZbaV09eAogICAgU2VnKCl7fQogICAgU2VnKGNvbnN0IHZlY3RvcjxpbnQ+JiB4b2ZfKXtidWlsZCh4b2ZfKTt9CiAgICB2b2lkIGJ1aWxkKGNvbnN0IHZlY3RvcjxpbnQ+JiB4b2ZfKXsKICAgICAgICB4b2Y9eG9mXzsgbj0xOyB3aGlsZShuPChpbnQpeG9mLnNpemUoKSkgbjw8PTE7CiAgICAgICAgdC5hc3NpZ24oMipuLCB7fSk7CiAgICAgICAgZm9yKGludCBpPTA7aTwoaW50KXhvZi5zaXplKCk7KytpKXsKICAgICAgICAgICAgdFtuK2ldLmFsbF9zb3J0ZWQ9e3hvZltpXX07CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT1uLTE7aT49MTstLWkpewogICAgICAgICAgICBhdXRvICZMPXRbaTw8MV0uYWxsX3NvcnRlZCwgJlI9dFtpPDwxfDFdLmFsbF9zb3J0ZWQ7CiAgICAgICAgICAgIHRbaV0uYWxsX3NvcnRlZC5yZXNpemUoc3ooTCkrc3ooUikpOwogICAgICAgICAgICBtZXJnZShhbGwoTCksYWxsKFIpLHRbaV0uYWxsX3NvcnRlZC5iZWdpbigpKTsKICAgICAgICB9CiAgICAgICAgYnVpbGRfcGFpcnMoMSwwLG4tMSk7CiAgICB9CiAgICB2b2lkIGJ1aWxkX3BhaXJzKGludCBwLGludCBsLGludCByKXsKICAgICAgICBpZihsPT1yKXsKICAgICAgICAgICAgdFtwXS5SX3NvcnRlZCA9IHRbcF0uYWxsX3NvcnRlZDsKICAgICAgICAgICAgdFtwXS5wcmVmQ250LmFzc2lnbihzeih0W3BdLlJfc29ydGVkKSsxLDApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtPShsK3IpPj4xOwogICAgICAgIGJ1aWxkX3BhaXJzKHA8PDEsbCxtKTsKICAgICAgICBidWlsZF9wYWlycyhwPDwxfDEsbSsxLHIpOwogICAgICAgIGNvbnN0IGF1dG8gJkw9dFtwPDwxXS5hbGxfc29ydGVkOwogICAgICAgIGNvbnN0IGF1dG8gJlI9dFtwPDwxfDFdLmFsbF9zb3J0ZWQ7CiAgICAgICAgdFtwXS5SX3NvcnRlZCA9IFI7CiAgICAgICAgdFtwXS5wcmVmQ250LmFzc2lnbihzeihSKSsxLDApOwogICAgICAgIGludCBpTD1zeihMKS0xOwogICAgICAgIGZvcihpbnQgaT0wO2k8c3ooUik7KytpKXsKICAgICAgICAgICAgd2hpbGUoaUw+PTAgJiYgTFtpTF0+UltpXSkgLS1pTDsKICAgICAgICAgICAgdFtwXS5wcmVmQ250W2krMV09dFtwXS5wcmVmQ250W2ldKyhsbCkoc3ooTCktKGlMKzEpKTsKICAgICAgICB9CiAgICB9CiAgICBpbmxpbmUgbGwgY291bnRfcGFpcnNfbm9kZShpbnQgcCxpbnQgTHgsaW50IFJ4KXsgLy8gc+G7kSBj4bq3cCAoeF9sZWZ0ID4geF9yaWdodCkgduG7m2kgeF9yaWdodCBpbiBbTHgsUnhdLCB4X2xlZnQgZnJlZSB0cm9uZyBub2RlCiAgICAgICAgY29uc3QgYXV0byAmUj10W3BdLlJfc29ydGVkOwogICAgICAgIGNvbnN0IGF1dG8gJnByZWY9dFtwXS5wcmVmQ250OwogICAgICAgIGF1dG8gaXQxPWxvd2VyX2JvdW5kKGFsbChSKSxMeCk7CiAgICAgICAgYXV0byBpdDI9dXBwZXJfYm91bmQoYWxsKFIpLFJ4KTsKICAgICAgICBpbnQgbD1pdDEtUi5iZWdpbigpLCByPWl0Mi1SLmJlZ2luKCk7CiAgICAgICAgaWYobD49cikgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIHByZWZbcl0tcHJlZltsXTsKICAgIH0KICAgIGxsIHF1ZXJ5KGludCBsLGludCByLGludCBMeCxpbnQgUngpewogICAgICAgIGwrPW47IHIrPW47CiAgICAgICAgbGwgcmVzPTA7CiAgICAgICAgdmVjdG9yPGludD4gbGVmdHMsIHJpZ2h0czsKICAgICAgICB3aGlsZShsPD1yKXsKICAgICAgICAgICAgaWYobCYxKSBsZWZ0cy5wYihsKyspOwogICAgICAgICAgICBpZighKHImMSkpIHJpZ2h0cy5wYihyLS0pOwogICAgICAgICAgICBsPj49MTsgcj4+PTE7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaWQ6bGVmdHMpIHJlcyArPSBjb3VudF9wYWlyc19ub2RlKGlkLEx4LFJ4KTsKICAgICAgICBmb3IoaW50IGk9c3oocmlnaHRzKS0xO2k+PTA7LS1pKSByZXMgKz0gY291bnRfcGFpcnNfbm9kZShyaWdodHNbaV0sTHgsUngpOwogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn07CgppbnQgbWFpbigpewogICAgcmYoKTsKICAgIGludCBuOyBpZighKGNpbj4+bikpIHJldHVybiAwOwogICAgdmVjdG9yPHZpPiBnMShuKSwgZzIobik7CiAgICBmZihpLDAsbi0xKXsKICAgICAgICBpbnQgZDsgY2luPj5kOyBnMVtpXS5yZXNlcnZlKGQpOwogICAgICAgIGZmKGosMSxkKXtpbnQgeDtjaW4+Png7IGcxW2ldLnBiKHgpO30KICAgIH0KICAgIGZmKGksMCxuLTEpewogICAgICAgIGludCBkOyBjaW4+PmQ7IGcyW2ldLnJlc2VydmUoZCk7CiAgICAgICAgZmYoaiwxLGQpe2ludCB4O2Npbj4+eDsgZzJbaV0ucGIoeCk7fQogICAgfQogICAgYXV0byBkZnM9WyZdKGNvbnN0IHZlY3Rvcjx2aT4mIGcpewogICAgICAgIHZpIHRpbihuKSwgdG91dChuKSwgaXQobiwwKTsgdmVjdG9yPGNoYXI+IHZpcyhuLDApOwogICAgICAgIHZlY3RvcjxpbnQ+IHN0OyBzdC5wYigwKTsgaW50IFQ9MDsKICAgICAgICB3aGlsZSghc3QuZW1wdHkoKSl7CiAgICAgICAgICAgIGludCB2PXN0LmJhY2soKTsKICAgICAgICAgICAgaWYoIXZpc1t2XSl7dmlzW3ZdPTE7IHRpblt2XT1UKys7fQogICAgICAgICAgICBpZihpdFt2XTwoaW50KWdbdl0uc2l6ZSgpKXtpbnQgdT1nW3ZdW2l0W3ZdKytdOyBzdC5wYih1KTt9CiAgICAgICAgICAgIGVsc2V7dG91dFt2XT1UOyBzdC5wb3BfYmFjaygpO30KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBhaXI8dmksdmk+KHRpbix0b3V0KTsKICAgIH07CiAgICBhdXRvIHQxPWRmcyhnMSksIHQyPWRmcyhnMik7CiAgICB2aSB0aW4xPXQxLmZpLCB0b3V0MT10MS5zZSwgdGluMj10Mi5maSwgdG91dDI9dDIuc2U7CgogICAgdmkgb3JkWChuKTsgZmYodiwwLG4tMSkgb3JkWFt0aW4xW3ZdXT12OwogICAgdmkgWHBvcyhuKTsgZmYoaSwwLG4tMSkgWHBvc1tvcmRYW2ldXT1pOwoKICAgIHZpIHkybm9kZShuKTsgZmYodiwwLG4tMSkgeTJub2RlW3RpbjJbdl1dPXY7CiAgICB2ZWN0b3I8aW50PiBYb2ZZKG4pOwogICAgZmYoeSwwLG4tMSl7aW50IHY9eTJub2RlW3ldOyBYb2ZZW3ldPVhwb3Nbdl07fQoKICAgIFNlZyBzZWcoWG9mWSk7CgogICAgaW50IHE7IGNpbj4+cTsKICAgIHZlY3RvcjxzdHJpbmc+IGFucyhxKTsKICAgIGZmKGksMCxxLTEpewogICAgICAgIGludCB1LHY7IGNpbj4+dT4+djsKICAgICAgICBpbnQgTHg9dGluMVt1XSwgUng9dG91dDFbdV0tMTsKICAgICAgICBpbnQgTHk9dGluMlt2XSwgUnk9dG91dDJbdl0tMTsKICAgICAgICBpZihMeD5SeCB8fCBMeT5SeSl7IGFuc1tpXT0iWUVTIjsgY247IH0KICAgICAgICBsbCBpbnYgPSBzZWcucXVlcnkoTHksUnksTHgsUngpOwogICAgICAgIGFuc1tpXT0oaW52PT0wPyJZRVMiOiJOTyIpOwogICAgfQogICAgZmYoaSwwLHEtMSkgY291dDw8YW5zW2ldPDxubDsKICAgIHJlOwp9Cg==