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

    }
}

}