#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define PB push_back
#define FI first
#define SE second
#define MP make_pair
#define ALL(cont) cont.begin(), cont.end()
class trienode
{
public:
trienode *children[256];
bool word;
trienode()
{
for(int i=0;i<256;i++)
children[i] = NULL;
word = false;
}
};
void insert(trienode *head, string val)
{
int n = val.length();
for(int i=0;i<n;i++)
{
if(head->children[val[i]]==NULL)
head->children[val[i]] = new trienode();
head = head->children[val[i]];
}
head->word = true;
}
void recur(trienode *head, string val)
{
if(head->word==true)
cout<<val<<endl;
for(int i=0;i<256;i++)
{
if(head->children[i]!=NULL)
recur(head->children[i],val+((char)i));
}
}
void query(trienode *head, string val)
{
int n = val.length();
for(int i=0;i<n;i++)
{
if(head->children[val[i]]==NULL)
{
cout<<"No suggestions"<<endl;
return;
}
head = head->children[val[i]];
}
recur(head,val);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int n;
string x;
cin>>n;
trienode *head = new trienode();
while(n--)
{
cin>>x;
insert(head,x);
}
int q;
cin>>q;
while(q--)
{
cin>>x;
query(head,x);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBGSSBmaXJzdAojZGVmaW5lIFNFIHNlY29uZAojZGVmaW5lIE1QIG1ha2VfcGFpcgojZGVmaW5lIEFMTChjb250KSBjb250LmJlZ2luKCksIGNvbnQuZW5kKCkKCmNsYXNzIHRyaWVub2RlCnsKcHVibGljOgogICAgdHJpZW5vZGUgKmNoaWxkcmVuWzI1Nl07CiAgICBib29sIHdvcmQ7CiAgICB0cmllbm9kZSgpCiAgICB7CiAgICAgICAgZm9yKGludCBpPTA7aTwyNTY7aSsrKQogICAgICAgICAgICBjaGlsZHJlbltpXSA9IE5VTEw7CiAgICAgICAgd29yZCA9IGZhbHNlOwogICAgfQp9OwoKdm9pZCBpbnNlcnQodHJpZW5vZGUgKmhlYWQsIHN0cmluZyB2YWwpCnsKICAgIGludCBuID0gdmFsLmxlbmd0aCgpOwogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBpZihoZWFkLT5jaGlsZHJlblt2YWxbaV1dPT1OVUxMKQogICAgICAgICAgICBoZWFkLT5jaGlsZHJlblt2YWxbaV1dID0gbmV3IHRyaWVub2RlKCk7CiAgICAgICAgaGVhZCA9IGhlYWQtPmNoaWxkcmVuW3ZhbFtpXV07CiAgICB9CiAgICBoZWFkLT53b3JkID0gdHJ1ZTsKfQoKdm9pZCByZWN1cih0cmllbm9kZSAqaGVhZCwgc3RyaW5nIHZhbCkKewogICAgaWYoaGVhZC0+d29yZD09dHJ1ZSkKICAgICAgICBjb3V0PDx2YWw8PGVuZGw7CiAgICBmb3IoaW50IGk9MDtpPDI1NjtpKyspCiAgICB7CiAgICAgICAgaWYoaGVhZC0+Y2hpbGRyZW5baV0hPU5VTEwpCiAgICAgICAgICAgIHJlY3VyKGhlYWQtPmNoaWxkcmVuW2ldLHZhbCsoKGNoYXIpaSkpOwogICAgfQp9Cgp2b2lkIHF1ZXJ5KHRyaWVub2RlICpoZWFkLCBzdHJpbmcgdmFsKQp7CiAgICBpbnQgbiA9IHZhbC5sZW5ndGgoKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgaWYoaGVhZC0+Y2hpbGRyZW5bdmFsW2ldXT09TlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PCJObyBzdWdnZXN0aW9ucyI8PGVuZGw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaGVhZCA9IGhlYWQtPmNoaWxkcmVuW3ZhbFtpXV07CiAgICB9CiAgICByZWN1cihoZWFkLHZhbCk7Cn0KCmludCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKICAgIAoKICAgIGludCBuOwogICAgc3RyaW5nIHg7CiAgICBjaW4+Pm47CiAgICB0cmllbm9kZSAqaGVhZCA9IG5ldyB0cmllbm9kZSgpOwogICAgd2hpbGUobi0tKQogICAgewogICAgICAgIGNpbj4+eDsKICAgICAgICBpbnNlcnQoaGVhZCx4KTsKICAgIH0KICAgIGludCBxOwogICAgY2luPj5xOwogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGNpbj4+eDsKICAgICAgICBxdWVyeShoZWFkLHgpOwogICAgfQogICAgcmV0dXJuIDA7CiAKIAp9