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

int main() {
    int n;
    cin >> n;
    vector<string> I(n);
    for (auto& it : I) cin >> it;
    // 这个是把我们的I数组输入进去
    int m;
    cin >> m;
    set<int> st;
    for (int i = 1; i <= m; i++) {
        int tmp;
        cin >> tmp;
        st.insert(tmp);
    }
    // 这个实现了我们R数组的去重和排序
    vector<int> res;
    for (auto& it : st) {
        int cnt = 0;
        bool okk = false;
        // cnt是有多少个
        // okk是我们是否找到
        for (auto& it1 : I) {
            if (it1.find(to_string(it)) != string::npos) {
                cnt += 1;
                if (okk == false) {
                    res.emplace_back(it);
                    okk = true;
                }
                // 如果找到了我们存入数组
            }
        }
        if (cnt != 0) {
            res.emplace_back(cnt);
            for (int i = 0; i < n; i++) {
                if (I[i].find(to_string(it)) != string::npos) {
                    res.emplace_back(i);
                    res.emplace_back(stoi(I[i]));
                }
            }
            // 我们每一次把我们的下标和我们的值存入
        }
    }
    cout << res.size() << " ";
    for (auto& it : res) {
        cout << it << " ";
    }
    cout << "\n";

    return 0;
}
// 64 位输出请用 printf("%lld")