#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")