#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <sstream>
#include <map>
#include <list>
#include <queue>
#include <set>
#include <algorithm>
#include <climits>
#include <cmath>
#include <cassert>
#include <stack>
#include <bitset>
#include <tr1/unordered_map>
#include <tr1/unordered_set>

#define mp make_pair
#define ll long long
#define ull unsigned long long
#define null NULL

const int INF=(INT_MAX>>2);

using namespace std;

string s;

struct node;
struct node {
    char s;
    map<int,node*> e;
    int pn;
    node *f;
    node(char c){
        s=c;
        f=null;
        pn=-1;
    }
};
node *root;
void bfs() {
    queue<node*> q;
    for(map<int,node*>::iterator i=root->e.begin();i!=root->e.end();++i) {
        i->second->f=root;
        q.push(i->second);
    }
    for(;!q.empty();) {
        node *u=q.front();
        q.pop();
        for(map<int,node*>::iterator v=u->e.begin();v!=u->e.end();++v) {
            for(v->second->f=u->f;;) {
                if(v->second->f->e.find(v->second->s)!=v->second->f->e.end()) {
                    v->second->f=v->second->f->e[v->second->s];
                    break;
                } else {
                    if(v->second->f==root) break;
                    v->second->f=v->second->f->f;
                }
            }
            q.push(v->second);
        }
    }
}
int q;
bool pf[1000];
int h[1000];
void search() {
    memset(pf,0,sizeof(pf));
    node *i=root;
    for(string::iterator c=s.begin();c!=s.end();) {
        if(i->e.find(*c)!=i->e.end()) {
            i=i->e[*c];
            for(node*k=i;k;k=k->f) {
                if(k->pn!=-1) {
                    pf[k->pn]=true;
                }
            }
            ++c;
        } else {
            for(;i!=root && (i->e.find(*c)==i->e.end());i=i->f);
            if(i->e.find(*c)!=i->e.end()) {
                continue;
            } else {
                ++c;
            }
        }
    }
    for(int i=0;i<q;++i) printf("%c\n",pf[h[i]]?'y':'n');
}

int main() {
//    freopen("me.txt","r",stdin);
    int t;
    cin>>t;
    for(string p;t--;) {
        root=new node(0);
        cin>>s;
        cin>>q;
        for(int i=0;i<q;++i) {
            cin>>p;
            node *k=root;
            h[i]=i;
            for(int j=0;j<p.size();++j) {
                if(k->e.find(p[j])!=k->e.end()) {
                    k=k->e[p[j]];
                }  else {
                    k=(k->e[p[j]]=new node(p[j]));
                }
                if(j==p.size()-1) {
                    if(k->pn==-1){
                        k->pn=i;
                    } else {
                        h[i]=k->pn;
                    }
                }
            }
        }
        bfs();
        search();
    }
    return 0;
}
