#include <bits/stdc++.h>
#include <string>
#include <vector>
using namespace std;
//看看a包不包含t 
bool t_in_I(int t,int a)
{
    string s1=to_string(t);
    string s2=to_string(a);
    if(s1.length()>s2.length()) return false;
    if(s2.find(s1)!=string::npos) return true;
    return  false;
}
int main() {
    int N,m;
    while(cin>>N)
    {
        vector<int> ans;//收集答案
        vector<int> I(N,0);
        for(int i=0;i<N;i++)
        {
            cin>>I[i];
        }
        cin>>m;
        set<int> R;
        int data;
        while(m--)
        {
            cin>>data;
            R.insert(data);
        }
        //以上处理输入
        for(auto it:R)
        {//从R依次中取出R<i>,对I进行处理,找到满足条件的I:
            int t=it;
            int cnt=0;
            bool flag=0;//默认I中没有合适的
            for(int i=0;i<I.size();i++)
            {
                if(t_in_I(t,I[i])) 
                {
                    if(flag==0)
                    {//有合适的
                        ans.push_back(t);
                        ans.push_back(-1);//先给满足条件的I的个数占个位,因为现在并不知道cnt是多少
                        flag=1;
                    }
                    ans.push_back(i);//满足条件的I在I序列中的位置索引(从0开始)
                    ans.push_back(I[i]);
                    cnt++;
                }
            }
            if(cnt)
                for(int i=0;i<ans.size();i++)
                    if(ans[i]==-1) ans[i]=cnt;
        }
        ans.insert(ans.begin(),1,ans.size());
        for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
        cout<<endl;
    }
}
// 64 位输出请用 printf("%lld")