import java.util.*; public class Main { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String[] strI = sc.nextLine().split(" ");
String[] strR = sc.nextLine().split(" ");
//R去重
Set<String> setR = new HashSet();
for(int j = 1; j < strR.length; j++){
setR.add(strR[j]);
}
String[] Ri = new String[setR.size()];
setR.toArray(Ri);
Arrays.sort(Ri);
HashMap<String,ArrayList<Integer>> resMap = new HashMap();
for(int n = 0; n < Ri.length; n++){
for(int i = 1; i < strI.length;i++){
if(strI[i].contains(Ri[n])){
//满足条件 记下当前的下标i 以及StrI[i]值 以及Ri值
if(resMap.containsKey(Ri[n])){
resMap.put(Ri[n],resMap.get(Ri[n])).add(i);
}else{
resMap.put(Ri[n],new ArrayList<Integer>());
resMap.put(Ri[n],resMap.get(Ri[n])).add(i);
}
//res.add(new int[]{Integer.parseInt(Ri[n]),i});
}
}
}
ArrayList<Integer> out = new ArrayList<>();
Integer[] resArray = new Integer[resMap.size()];
String[] resStringArray = new String[resMap.size()];
resMap.keySet().toArray(resStringArray);
for (int i = 0; i < resArray.length; i++) {
resArray[i] = Integer.parseInt(resStringArray[i]);
}
Arrays.sort(resArray);
for(Integer s : resArray){
out.add(s);
out.add(resMap.get(s.toString()).size());
for(Integer i : resMap.get(s.toString())){
out.add(i-1);
out.add(Integer.parseInt(strI[i]));
}
}
System.out.print(out.size());
System.out.print(" ");
for(int i : out){
System.out.print(i+" ");
}
System.out.println();
}
}
}