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