#include <stdio.h>
#include <string.h>

typedef struct stu{
    char id[21];
    int grade;
}stu;

int cmp(const void *a,const void *b)
{
    if((*(stu *)b).grade!=(*(stu *)a).grade)
        return (*(stu *)b).grade-(*(stu *)a).grade;
    else
        return (*(stu *)a).id[strlen((*(stu *)a).id)-1]-(*(stu *)b).id[strlen((*(stu *)b).id)-1];
}

int main()
{
    int n,m,g,i,j,k,len,c;
    while(scanf("%d%d%d",&n,&m,&g)!=EOF&&n!=0)
    {
        stu s[n];
        int a[m];
        for(i=0;i<m;i++)
            scanf("%d",&a[i]);
        for(i=0,c=0;i<n;i++)
        {
            s[i].grade=0;
            scanf("%s %d",&s[i].id,&len);
            for(j=0;j<len;j++)
            {
                scanf("%d",&k);
                s[i].grade+=a[k-1];
            }
            if(s[i].grade>=g) c++;
        }
        qsort(s,n,sizeof(s[0]),cmp);
        printf("%d\n",c);
        for(i=0;i<c;i++)
            printf("%s %d\n",s[i].id,s[i].grade);
    }
    return 0;
}

c(语言实现•̀ᴗ•́)و