
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
bool match(int num,int find)
{
string str_num = to_string(num);
string str_find = to_string(find);
//*******************************
//字符串查找子串
//*******************************
int flag = str_find.find(str_num);
if(flag!=-1)
return true;
else
return false;
}
int main()
{
int I_num,R_num,Temp;
while(cin>>I_num)
{
vector<int> I_vec;
vector<int> R_vec;
for(int i = 0;i<I_num;i++)
{
cin>>Temp;
I_vec.push_back(Temp);
}
cin>>R_num;
for(int i = 0;i<R_num;i++)
{
cin>>Temp;
R_vec.push_back(Temp);
}
//*******************************
//排序去重
//*******************************
sort(R_vec.begin(),R_vec.end());
R_vec.erase(unique(R_vec.begin(), R_vec.end()), R_vec.end());//去重
//*******************************
//unique,去重,把重复的元素扔在后面,返回首地址
//*******************************
//分类存放
vector<int> R_out_vec;
vector<int> I_cnt_vec;
vector<int> I_index_vec;
vector<int> I_out_vec;
for(int i = 0;i<R_vec.size();i++)
{
int cnt = 0;
for(int j = 0;j<I_num;j++)
{
if(match(R_vec[i],I_vec[j]))
{
cnt++;
I_index_vec.push_back(j);
I_out_vec.push_back(I_vec[j]);
}
}
if(cnt!=0)
{
R_out_vec.push_back(R_vec[i]);
I_cnt_vec.push_back(cnt);
}
}
cout<<R_out_vec.size()+I_cnt_vec.size()+I_index_vec.size()+I_out_vec.size()<<' ';
//分类调用
int off_set = 0;
for(int i = 0;i<R_out_vec.size();i++)
{
cout<<R_out_vec[i]<<' ';
cout<<I_cnt_vec[i]<<' ';
for(int j = 0;j<I_cnt_vec[i];j++)
{
cout<<I_index_vec[j+off_set]<<' ';
cout<<I_out_vec[j+off_set]<<' ';
}
off_set+=I_cnt_vec[i];
}
cout<<endl;
}
}