#include <stdio.h>
#include <string.h>
struct Stu
{
char name[21];
int grade;
}stu[1000];
void sort(struct Stu stu[],int N){
int max;
for(int i=0;i<N-1;i++){
max=i;
for(int j=i+1;j<N;j++){
if(stu[max].grade<stu[j].grade)max=j;
if(stu[max].grade==stu[j].grade)
if(strcmp(stu[max].name,stu[j].name)>0)
max=j;
}
struct Stu temp=stu[max];
stu[max]=stu[i];
stu[i]=temp;
}
}
int main(){
int N,M,G,score[11],m,g,sum;
while(scanf("%d%d%d",&N,&M,&G)!=EOF){
sum=0;if(N==0)break;
for(int i=1;i<=M;i++)
scanf("%d",&score[i]);
for(int i=0;i<N;i++){
scanf("%s",stu[i].name);
scanf("%d",&m);stu[i].grade=0;
for(int j=0;j<m;j++){
scanf("%d",&g);
stu[i].grade+=score[g];
}
if(stu[i].grade>=G)sum++;
}
sort(stu,N);printf("%d\n",sum);
for(int i=0;i<N;i++){
if(stu[i].grade>=G)
printf("%s %d\n",stu[i].name,stu[i].grade);
}
}
return 0;
}