import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int N = sc.nextInt();
            if (N == 0) break;               // 输入结束
            int M = sc.nextInt();
            int G = sc.nextInt();
            int[] scores = new int[M];        // 存储每题分值
            for (int i = 0; i < M; i++) {
                scores[i] = sc.nextInt();
            }
            List<Student> list = new ArrayList<>();
            for (int i = 0; i < N; i++) {
                String id = sc.next();
                int m = sc.nextInt();
                int sum = 0;
                for (int j = 0; j < m; j++) {
                    int problem = sc.nextInt();
                    sum += scores[problem - 1];  // 题号从1开始,下标减1
                }
                if (sum >= G) {
                    list.add(new Student(id, sum));
                }
            }
            // 按分数降序,分数相同按考号升序
            Collections.sort(list, new Comparator<Student>() {
                @Override
                public int compare(Student s1, Student s2) {
                    if (s1.score != s2.score) {
                        return s2.score - s1.score;   // 降序
                    } else {
                        return s1.id.compareTo(s2.id); // 升序
                    }
                }
            });
            System.out.println(list.size());
            for (Student s : list) {
                System.out.println(s.id + " " + s.score);
            }
        }
        sc.close();
    }

    static class Student {
        String id;
        int score;
        Student(String id, int score) {
            this.id = id;
            this.score = score;
        }
    }
}