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