#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
class data
{
public:
char str[25];
int sum;
};
data student[1005];
int cmp(const data& a, const data& b)
{
if(a.sum != b.sum)
return a.sum > b.sum;
else
{
int x = 0, y = 0;
int len1 = strlen(a.str);
int len2 = strlen(b.str);
int i = 0, j = 0;
while((a.str[i] >= 'A' && a.str[i] <= 'Z') || (a.str[i] >= 'a' && a.str[i] <= 'z'))
i++;
while(a.str[i] != '\0')
{
x += x * 10 + (a.str[i] - '0');
i++;
}
while((b.str[j] >= 'A' && b.str[j] <= 'Z') || (b.str[j] >= 'a' && b.str[j] <= 'z'))
j++;
while(b.str[j] != '\0')
{
y += y * 10 + (b.str[j] - '0');
j++;
}
return x < y;
}
}
int main()
{
int N, M, G;
int sroce[12], i, j, k;
while(scanf("%d", &N) != EOF && N != 0)
{
scanf("%d%d", &M, &G);
for(i = 1; i <= M; i++)
scanf("%d", &sroce[i]);
for(i = 0; i < N; i++)
{
scanf("%s%d", student[i].str, &j);
student[i].sum = 0;
while(j--)
{
scanf("%d", &k);
student[i].sum += sroce[k];
}
}
sort(student, student + N, cmp);
int count = 0;
for(i = 0; i < N; i++)
{
if(student[i].sum >= G)
count++;
else
break;
}
printf("%d\n", count);
for(i = 0; i < count; i++)
printf("%s %d\n", student[i].str, student[i].sum);
}
return 0;
}