#include <bits/stdc++.h>
using namespace std;
int main()
{
    int m = 0, n = 0;
    while(cin >> m)
    {
        vector<string> I(m, string());
        for(int i = 0; i < m; i++)
        {
            cin >> I[i];
        }
        cin >> n;
        vector<string> R(n, string());
        for(int i = 0; i < n; i++)
        {
            cin >> R[i];
        }
        map<int, vector<pair<int, string>>> mapR;
        for(auto s : R)
        {
            int snum = stoi(s);//关键字为int
            auto ret = mapR.insert(make_pair(snum, vector<pair<int, string>>()));
            if(ret.second)
            {
                auto &vec = mapR[snum];
                for(int i = 0; i < I.size(); i++)
                {
                    if(I[i].find(s) != string::npos)//查找被包含关系很方便
                    {
                        vec.push_back(make_pair(i, I[i]));
                    }
                }
                if(vec.empty())//删除
                {
                    mapR.erase(snum);
                }
            }
        }
        int sumnum = 0;
        for(auto e : mapR)
        {
            sumnum += (e.second.size() + 1) * 2;
        }
        cout << sumnum << " ";
        for(auto e : mapR)
        {
            cout << e.first << " " << e.second.size() << " ";
            for(auto p : e.second)
            {
                cout << p.first << " " << p.second << " ";
            }
        }
        cout << endl;
    }
}