#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int G[220][220];
vector<int> path;
int num[220];
bool isHam(){
fill(num,num+220,0);
//1:是不是环
if(path[0]!=path[path.size()-1]) return false;
//2:是不是简单路径:每个结点都访问了且仅访问一次,起点除外
for(int i=0;i<path.size();i++) num[path[i]]++;
if(num[path[0]]!=2) return false;
for(int i=1;i<=n;i++){
if(num[i]==1);
else if(i==path[0] && num[i]==2);
else return false;
}
//3:路径是否合法,相邻路径点间是否有边
for(int i=1;i<path.size();i++){
if(G[path[i-1]][path[i]]!=1) return false;
}
return true;
}
int main(){
cin>>n>>m;
int v1,v2;
for(int i=0;i<m;i++){
cin>>v1>>v2;
G[v1][v2]=G[v2][v1]=1;
}
int tk,t;
cin>>k;
for(int i=0;i<k;i++){
cin>>tk;
for(int j=0;j<tk;j++){
cin>>t;
path.push_back(t);
}
printf("%s",isHam()?"YES\n":"NO\n");
path.clear();
}
return 0;
}
11-19
255
11-06
865