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

int main() {
    int m,n;
    cin >> m;
    vector<int> vi,vr;
    while (m--) {
        int a;
        cin>>a;
        vi.push_back(a);
    }
    cin>>n;
    while (n--) {
        int a;cin>>a;
        vr.push_back(a);
    }
    sort(vr.begin(),vr.end());

    auto contain=[](int a, int b) {
        string sa=to_string(a);
        string sb=to_string(b);
        auto pos=sa.find(sb);
        if (pos!=string::npos) return true;
        return false;
    };
    int cnt=0;
    int last=INT_MAX;
    vector<int> res;
    int pos=1;
    for (auto r:vr) {
        if (r==last) continue;
        last=r;
        int cnt=0;
        for (int idx=0; idx<vi.size();idx++) {
            if (contain(vi[idx], r)) {
                if (cnt==0) {
                    res.push_back(r);
                    res.push_back(cnt);
                }
                res.push_back(idx);
                res.push_back(vi[idx]);
                cnt++;
            }
        }
        if (cnt>0) {
            res[pos]=cnt;
            pos=pos+2+cnt*2;
        }
    }
    cout<<res.size()<<" ";
    for (auto i:res) cout<<i<<" ";
    return 0;
}
// 64 位输出请用 printf("%lld")