using namespace std;
#include
#include
int arr[510][510];
int main()
{
int v, e, k;
cin >> v >> e >> k;
//构建无向图
while (e--)
{
int a, b; cin >> a >> b;
arr[a][b] = 1;
arr[b][a] = 1;
}
int n; cin >> n;
int flag = 0;
int cr = 0;
vector r[510];//存入对应颜色的节点
while (n--)
{
unordered_set st;//记录颜色的个数
for (int i = 1; i <= v; i++)
{
cin >> cr;
st.insert(cr);
//如果出现重复的颜色,就进行判断
if (r[cr].size() > 0) //出现了相同的颜色
{
//判断具有相同颜色的节点是否与当前节点有共同的边
for (int j = 0; j < r[cr].size(); j++)
{
if (arr[i][r[cr][j]])
flag = 1;
}
}
if (flag) break;
r[cr].push_back(i);
}
if (st.size() != k) flag = 1;
if (flag == 1) printf("No\n");
else printf("Yes\n");
}
return 0;
}