#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
typedef struct node
{
string id;
int grd;
}N;
N ss[1010];
int cmp(N a,N b)
{
if(a.grd!=b.grd) return a.grd>b.grd;
return a.id<b.id;
//return strcmp(a.id,b.id);
//return strcmp( ((In *)a)->str , ((In *)b)->str );
}
int mm[11];
int main()
{
int n,m,g,i,tn,t,ts,j,k,num;//人数 题数 分数线
while(cin>> n && n)
{
cin>>m>>g;
for(i=1;i<=m;i++) cin>>mm[i];
for(i=0;i<n;i++)
{
cin>>ss[i].id;
ts=0;
cin>>tn;
for(j=0;j<tn;j++)
{
cin>>t; ts+=mm[t];
}
ss[i].grd=ts;
}
sort(ss,ss+n,cmp);
num=0;
for(k=0;k<n;k++)
{
if(ss[k].grd>=g) num++;
else break;
}
cout<<num<<endl;
for(k=0;k<num;k++)
{
cout<<ss[k].id<<" "<<ss[k].grd<<endl;
}
}
}
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
typedef struct node
{
string id;
int grd;
}N;
N ss[1010];
int cmp(N a,N b)
{
if(a.grd!=b.grd) return a.grd>b.grd;
return a.id<b.id;
//return strcmp(a.id,b.id);
//return strcmp( ((In *)a)->str , ((In *)b)->str );
}
int mm[11];
int main()
{
int n,m,g,i,tn,t,ts,j,k,num;//人数 题数 分数线
while(cin>> n && n)
{
cin>>m>>g;
for(i=1;i<=m;i++) cin>>mm[i];
for(i=0;i<n;i++)
{
cin>>ss[i].id;
ts=0;
cin>>tn;
for(j=0;j<tn;j++)
{
cin>>t; ts+=mm[t];
}
ss[i].grd=ts;
}
sort(ss,ss+n,cmp);
num=0;
for(k=0;k<n;k++)
{
if(ss[k].grd>=g) num++;
else break;
}
cout<<num<<endl;
for(k=0;k<num;k++)
{
cout<<ss[k].id<<" "<<ss[k].grd<<endl;
}
}
}