#include<iostream>
#include<bitset>
#include<vector>
#include<algorithm>
using namespace std;
int N,H,W,h[10],w[10];
string t[20];
bitset<400>R[10][4];
bool used[10];
int cnt[10];
vector<int>id;
bool dfs(const bitset<400>&F,int I,int rest)
{
	if(rest==0)return true;
	bool flag=true;
	int p;
	while(flag)
	{
		for(int j=0;j<W;j++)if(!F[I*W+j])
		{
			p=j;
			flag=false;
			break;
		}
		I+=flag;
	}
	bitset<400>test=F;
	for(int ii=0;ii<N;ii++)
	{
		int i=id[ii];
		if(used[i])continue;
		for(int r=0;r<4;r++)
		{
			for(int I=0;I<H;I++)
			{
				if(r%2==0&&I+h[i]>H||r%2==1&&I+w[i]>H)break;
				for(int J=0;J<W;J++)
				{
					if(r%2==0&&J+w[i]>W||r%2==1&&J+h[i]>W)break;
					if(!(F&(R[i][r]<<I*W+J)).any())test|=R[i][r]<<I*W+J;
				}
			}
		}
	}
	if(test.count()!=H*W)return false;
	for(int ii=0;ii<N;ii++)
	{
		int i=id[ii];
		if(used[i])continue;
		used[i]=true;
		for(int r=0;r<4;r++)
		{
			if(r%2==0&&I+h[i]>H||r%2==1&&I+w[i]>H)continue;
			for(int J=0;J<=p;J++)
			{
				if(r%2==0&&J+w[i]>W||r%2==1&&J+h[i]>W)break;
				if(!R[i][r][p-J])continue;
				if((F&(R[i][r]<<I*W+J)).any())continue;
				if(dfs(F|(R[i][r]<<I*W+J),I,rest-cnt[i]))return true;
			}
		}
		used[i]=false;
	}
	return false;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	while(cin>>H>>W,H)
	{
		bitset<400>F;
		for(int i=0;i<H;i++)
		{
			string s;cin>>s;
			for(int j=0;j<W;j++)
			{
				if(s[j]=='#')F[i*W+j]=1;
			}
		}
		cin>>N;
		id.clear();
		for(int i=0;i<N;i++)
		{
			id.push_back(i);
			cin>>h[i]>>w[i];
			for(int r=0;r<4;r++)R[i][r].reset();
			cnt[i]=0;
			for(int j=0;j<h[i];j++)cin>>t[j];
			for(int I=0;I<h[i];I++)for(int J=0;J<w[i];J++)if(t[I][J]=='#')
			{
				cnt[i]+=1;
				R[i][0][I*W+J]=1;
				R[i][1][J*W+(h[i]-I-1)]=1;
				R[i][2][(h[i]-I-1)*W+(w[i]-J-1)]=1;
				R[i][3][(w[i]-J-1)*W+I]=1;
			}
		}
		sort(id.begin(),id.end(),[](int a,int b){return cnt[a]>cnt[b];});
		int p;cin>>p;
		int T=H*W-F.count();
		for(;p--;)
		{
			int k;cin>>k;
			for(int i=0;i<N;i++)used[i]=true;
			int left=T;
			for(;k--;)
			{
				int a;cin>>a;a--;
				used[a]=false;
				left-=cnt[a];
			}
			cout<<(left==0&&dfs(F,0,T)?"YES":"NO")<<endl;
		}
	}
}
