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

// 判断 i 是否包含 r
bool check(int i, int r)
{
    int digit = 1;
    while(r / digit != 0)
    {
        digit *= 10;   // digit表示 r 的位数, 例如 r = 34,则digit = 100;  r = 123, digit = 1000
    }
    while(i * 10 / digit != 0)
    {
        int k = i % digit;
        if(k == r)
        {
            return true;
        }
        i = i / 10;
    }
    return false;
}

int main()
{
    int m, n;
    while(cin >> m)
    {
        vector<int> output;
        output.push_back(0); // 预留出第一个位置用于存放个数
        vector<int> I;
        set<int> R;
        for (int i = 0; i < m; i++)
        {
            int a;
            cin >> a;
            I.push_back(a);
        }
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            int b;
            cin >> b;
            R.insert(b);
        }
        for (set<int>::iterator it = R.begin(); it != R.end(); it++)
        {
            int num = 0;
            vector<int> v;
            for (int i = 0; i < I.size(); i++)
            {
                if (check(I[i], (*it)))
                {
                    num++;
                    v.push_back(i); // 下标
                    v.push_back(I[i]); // 对应的下标数据
                }
            }
            if (num > 0)
            {
                output.push_back(*it); // R中的数据
                output.push_back(num); // I中满足数据的个数
                for (int i = 0; i < v.size(); i++)
                {
                    output.push_back(v[i]);
                }
            }
        }
        output[0] = output.size() - 1;
        for (int j = 0; j < output.size()-1; j++)
        {
            cout << output[j] << " ";
        }
        cout << output[output.size() - 1] << endl;
    }
    return 0;
}