#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
//英语 看博友分析 trie树 dfs
struct nod{
int sum;
int p[26];
}da[10000];
int js;
int mp[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
string ss;
int mx;
char tmp[10000];
char jg[10000];
void dfs(int pp,int x,int mn)
{
if(x==mn)
{
if(da[pp].sum>mx)
{
mx=da[pp].sum;
for(int i=0;i<mn;i++)
{
jg[i]=tmp[i];
}
}
return;
}
int t=ss[x]-'0';
for(int i=0;i<26;i++)
{
if(da[pp].p[i]!=-1&&mp[i]==t)
{
tmp[x]=i+'a';
dfs(da[pp].p[i],x+1,mn);
}
}
}
int main()
{
int T;
cin>>T;
int tag=0;
while(T--)
{
int n;
cin>>n;
for(int i=0;i<10000;i++)
{
da[i].sum=0;
for(int j=0;j<26;j++)
{
da[i].p[j]=-1;
}
}
js=0;
for(int i=0;i<n;i++)
{
string s;
int a;
cin>>s>>a;
int tp=0;
for(int j=0;j<s.size();j++)
{
if(da[tp].p[s[j]-'a']==-1)
{
da[tp].p[s[j]-'a']=++js;
tp=js;
da[tp].sum=a;
}else
{
tp=da[tp].p[s[j]-'a'];
da[tp].sum+=a;
}
}
}
int m;
cin>>m;
tag++;
cout<<"Scenario #"<<tag<<":"<<endl;
while(m--)
{
cin>>ss;
int tp=0;
for(int i=0;i<ss.size()-1;i++)
{
mx=-1;
dfs(0,0,i+1);
if(mx!=-1)
{
for(int j=0;j<=i;j++)
{
cout<<jg[j];
}
}else
{
cout<<"MANUALLY";
}
cout<<endl;
}
cout<<endl;
}
cout<<endl;
}
return 0;
}