#include<iostream>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
bool flag[201][201];
void isMaxClique(vector<int> Q,vector<int> &S)
{
bool tag=true;
for(int i=0;i<Q.size();++i)
{
for(int j=i+1;j<Q.size();++j)
{
if(flag[Q[i]][Q[j]]==false) {
tag = false;
break;
}
}
if(tag==false) break;
}
if(tag==false) {
cout<<"Not a Clique"<<endl;
return;
}
vector<int> v=vector<int>(S.size()-Q.size());
set_difference(S.begin(),S.end(),Q.begin(),Q.end(),v.begin());
for(int i=0;i<v.size();++i)
{
bool tag1 = true;
for(int j=0;j<Q.size();++j)
{
if(flag[Q[j]][v[i]]==false){
tag1 = false;
break;
}
}
if(tag1==true)
{
cout<<"Not Maximal"<<endl;
return;
}
}
cout<<"Yes"<<endl;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
flag[i][j]=false;
}
}
for(int i=0;i<m;++i)
{
int a,b;
cin>>a>>b;
flag[a][b]=true;
flag[b][a]=true;
}
vector<int> S=vector<int>(n);
for(int i=0;i<n;++i)
{
S[i]=i+1;
}
cin>>n;
for(int i=0;i<n;++i)
{
cin>>m;
vector<int> Q=vector<int>(m);
for(int j=0;j<m;++j)
{
cin>>Q[j];
}
sort(Q.begin(),Q.end());
isMaxClique(Q,S);
}
return 0;
}