import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] I = new String[in.nextInt()];
input(I, in);
Set<String> set = new TreeSet<String>(Comparator.comparing(Integer::parseInt));
for (int i = in.nextInt(); i > 0; i--) {
set.add(in.next());
}
List<String> list = new ArrayList<>();
for (String r : set) {
int count = 0;
List<String> temp = new ArrayList<>();
for (int i = 0; i < I.length; i++) {
if (contains(I[i], r)) {
count++;
temp.add(String.valueOf(i));
temp.add(I[i]);
}
}
if (count != 0) {
temp.add(0, String.valueOf(count));
temp.add(0, r);
}
list.addAll(temp);
}
list.add(0, String.valueOf(list.size()));
System.out.println(String.join(" ", list));
}
static boolean contains(String a, String b) {
return String.valueOf(a).contains(String.valueOf(b));
}
static void input(String[] arr, Scanner sc) {
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.next();
}
}
}