#include<bits/stdc++.h>
using namespace std;
#define mst(x,y) memset(x,y,sizeof(x))
#define rep(x,y,z) for(int x=(y);(x)<(z);x++)
const int maxn=500;
int n,m,x,y,k,tmp;
int vis[maxn],rou[maxn];
vector<int> g[maxn];
int judge(int x,int y){
rep(i,0,g[x].size()) if(g[x][i]==y)
return 1;
return 0;
}
int main(){
cin>>n>>m;
rep(i,0,m){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
tmp=n;
cin>>k;
rep(i,0,k){
cin>>n;
rep(j,0,n) cin>>rou[j];
mst(vis,0);
int flag=1;
if(n<2||rou[0]!=rou[n-1]) flag=0;
n--;
if(n!=tmp) flag=0;
rep(j,0,n){
if(vis[rou[j]]) flag=0;
vis[rou[j]]=1;
if(j){
if(judge(rou[j],rou[j-1])==0) flag=0;
}
}
if(judge(rou[n-1],rou[0])==0) flag=0;
if(flag) cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}