#include<iostream>
#include<string>
#include<vector>
using namespace std;

void qsort(vector<int>& v,int low,int high){
    if(low<high){
        int key=v[low];
        int l=low,r=high;
        while(l<r){
            while(l<r && v[r]>=key) r--; 
            if(l<r) v[l]=v[r];
            while(l<r && v[l]<=key) l++;
            if(l<r) v[r]=v[l];
        }
        v[l]=key;
        qsort(v,low,l-1);
        qsort(v,l+1,high);
    }
}

pair<int,vector<int>> numinl(vector<int> vl,int n){
    vector<int> vec;
    int cnt=0;
    string s=to_string(n);
    for(int i=0;i<vl.size();i++){
        if(to_string(vl[i]).find(s)!=string::npos){
            vec.push_back(i);
            cnt++;
        }
    }
    return make_pair(cnt, vec);
}

int main(){
    int s;
    while(cin>>s){
        vector<int> vl;
        vector<int> vr;
        for(int i=0;i<s;i++){
            int s2;
            cin>>s2;
            vl.push_back(s2);
        }
        cin>>s;
        for(int i=0;i<s;i++){
            int s2;
            cin>>s2;
            vr.push_back(s2);
        }
        qsort(vr,0,vr.size()-1);
        vector<int> ans;
        for(int i=0;i<vr.size();i++){
            if(i>0 && vr[i]==vr[i-1]) continue;
            int cnt=numinl(vl,vr[i]).first;
            vector<int> pos=numinl(vl,vr[i]).second;
            if(cnt!=0){
                ans.push_back(vr[i]);
                ans.push_back(cnt);
                for(int x:pos){
                    ans.push_back(x);
                    ans.push_back(vl[x]);
                }
            }
        }
        cout<<ans.size()<<' ';
        for(int i=0;i<ans.size();i++){
            cout<<ans[i]<<' ';
        }
        cout<<endl;
    }
}