#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;
}