#include<iostream>
#include<vector>
#include<set>
#include<sstream>
using namespace std;
//s1是否包含s2
bool isContained(string s1, string s2){
if(s1.size()<s2.size())
return false;
for(int i=0;i<=s1.size()-s2.size();i++){
string temp=s1.substr(i,s2.size());
if(temp==s2)
return true;
}
return false;
}
int main(){
vector<int> I;
set<int> R;
int n,temp;
while(cin>>n){
I.clear();
R.clear();
while(n--){
cin>>temp;
I.push_back(temp);
}
cin>>n;
while(n--){
cin>>temp;
R.insert(temp);
}
vector<vector<int>> res;
for(auto i=R.begin();i!=R.end();i++){
stringstream ss;
ss<<*i;
vector<int> index;
for(int j=0;j<I.size();j++){
stringstream s;
s<<I[j];
if(isContained(s.str(), ss.str())){
index.push_back(j);
}
}
res.push_back(index);
}
int count=0;
for(int i=0;i<res.size();i++){
if(!res[i].empty()){
count+=2;
count+=res[i].size()*2;
}
}
cout<<count<<" ";
int j=0;
for(auto i=R.begin();i!=R.end();i++){
if(!res[j].empty()){
cout<<*i<<" "<<res[j].size()<<" ";
for(int k=0;k<res[j].size();k++)
cout<<res[j][k]<<" "<<I[res[j][k]]<<" ";
}
j++;
}
cout<<endl;
}
return 0;
}