#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

int waku_kuuhaku=0;
int W,H;

int waku[20][20]={0};

int piece_wh[11][2]={0};
int piece_kazu[11]={0};
int piece[11][20][20]={0};

void turn_90(int h, int w, int num){
    
    int after[20][20]={0};
    for(int i=0; i<h; i++){
        for(int j=0; j<w; j++){
            after[j][h-i-1]=piece[num][i][j];
        }
    }
    
    for(int i=0; i<20; i++){
        for(int j=0; j<20; j++){
            piece[num][i][j]=after[i][j];
        }
    }
    
}

void print(int array[20][20]){
    for(int i=0; i<20; i++){
        for(int j=0; j<20; j++){
            cout<<array[i][j];
        }
        cout<<endl;
    }
    cout<<endl;
}


void cpy(int before[20][20], int after[20][20]){
    for(int i=0; i<20; i++){
        for(int j=0; j<20; j++){
            after[i][j]=before[i][j];
        }
    }
}

bool check(int k, int k_num, int t[10], int h, int w, int now_waku[20][20], int deg){
    if(k_num==k)return true;
    //cout<<h<<" "<<w<<" --------------"<<endl;
    //print(now_waku);
    
    bool flag;
    int num = t[k_num];
    for(; deg<4; deg++){
        //print(piece[num]);
        flag=true;
        for(int i=0; i<piece_wh[num][0]; i++){
            if(h+i>=H){
                flag=false;
                break;
            }
            for(int j=0; j<piece_wh[num][1]; j++){
                if(w+j>=W){
                    flag=false;
                    break;
                }
                if(piece[num][i][j]==1 && now_waku[h+i][w+j]==1){
                    flag=false;
                    break;
                }
            }
            if(flag==false)break;
        }
        if(flag==true)break;
        turn_90(piece_wh[num][0], piece_wh[num][1], num);
        swap(piece_wh[num][0], piece_wh[num][1]);
        
    }
    
    //if(flag)cout<<"true"<<endl;
    
    if(flag==true){
        int temp_waku[20][20];
        cpy(now_waku, temp_waku);
        for(int i=0; i<piece_wh[num][0]; i++){
            for(int j=0; j<piece_wh[num][1]; j++){
                if(piece[num][i][j]==1 && now_waku[h+i][w+j]==0){
                    temp_waku[h+i][w+j]=1;
                }
            }
        }
        bool res1 = check(k, k_num+1, t, 0, 0, temp_waku, 0);
        
        if(res1)return res1;
        
        bool res2=false;
        if(deg<4) {
            turn_90(piece_wh[num][0], piece_wh[num][1], num);
            swap(piece_wh[num][0], piece_wh[num][1]);
            res2 = check(k, k_num, t, h, w, now_waku, deg);
        }
        if(res2)return res2;
        
        
        
        bool res3;
        if(h==H-1 && w==W-1)return false;
        else if(w==W-1){
            res3 = check(k, k_num, t, h+1, 0, now_waku, 0);
        }else{
            res3 = check(k, k_num, t, h, w+1, now_waku, 0);
        }
        
        return res3 ;
        
    }else{
        if(h==H-1 && w==W-1)return false;
        else if(w==W-1){
            return check(k, k_num, t, h+1, 0, now_waku, 0);
        }else{
            return check(k, k_num, t, h, w+1, now_waku, 0);
        }
    }
}


int main(){
    
    while(cin>>H>>W){
        if(H==0&&W==0)break;
        
        for(int i=0; i<H; i++){
            for(int j=0; j<W; j++){
                char temp;
                cin>>temp;
                if(temp=='.'){
                    waku_kuuhaku++;
                    waku[i][j]=0;
                }else{
                    waku[i][j]=1;
                }
            }
        }
        
        
        int n;
        cin>>n;
        

        
        for(int i=1; i<=n; i++){
            cin>>piece_wh[i][0]>>piece_wh[i][1];
            for(int j=0; j<piece_wh[i][0]; j++){
                for(int k=0; k<piece_wh[i][1]; k++){
                    char temp;
                    cin>>temp;
                    if(temp=='.'){
                        piece[i][j][k]=0;
                    }else{
                        piece[i][j][k]=1;
                        piece_kazu[i]++;
                    }
                }
            }
        }
        
        
        int p;
        cin>>p;
        for(int i=0; i<p; i++){
            int k;
            cin>>k;
            int t[10]={0};
            int t_kazu=0;
            for(int j=0; j<k; j++){
                cin>>t[j];
                t_kazu+=piece_kazu[t[j]];
            }
            
            if(t_kazu==waku_kuuhaku){
                if(check(k, 0, t, 0, 0, waku, 0)){
                    cout<<"YES"<<endl;
                }else{
                    cout<<"NO"<<endl;
                }
            }else{
                cout<<"NO"<<endl;
            }
        }
        
    }

}