#include<iostream> #include<string> #include<algorithm> using namespace std; struct student{ char name[25]; int mark; }; bool cmp(student i,student b){ int j; if(i.mark==b.mark){ /*for(j=0;i.name[j]!='\0' || b.name[j]!='\0';j++){ if(i.name[j]!=b.name[j]) return i.name[j]<b.name[j]; }*/ return strcmp(i.name,b.name)<0; } else return i.mark>b.mark; } int a[15]; // the mark of each problem int main(){ int g,n,m; int ans; //the num of pass int i; string s; while(scanf("%d",&n) && n!=0){ ans=0; student stu[1005]; scanf("%d%d",&m,&g); for(i=1;i<=m;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++){ int k; //the num of solved int b; //the index of problem scanf("%s",stu[i].name); //stu[i].name=s; scanf("%d",&k); stu[i].mark=0; while(k--){ scanf("%d",&b); stu[i].mark+=a[b]; } if(stu[i].mark>=g) ans++; } //int t; sort(stu+1,stu+n+1,cmp); /*for(i=1;stu[i].mark>=g;i++); t=i; ans=i-1;*/ printf("%d\n",ans); for(i=1;stu[i].mark>=g && i<n;i++){ printf("%s %d\n",stu[i].name,stu[i].mark); } } return 0; }