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();
        }
    }
}