#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <iostream>#include <algorithm>#include <map>#include <set>#include <stack>#include <queue>#include <vector> using namespace std; typedef long long LL; typedef struct{ char name[30]; int value;}ss; ss s[1010];int t[20];int n,m,g; int cmp(const void *a, const void *b){ ss *p = (ss *)a, *q = (ss *)b; if(p->value == q->value) return strcmp(p->name, q->name); return q->value-p->value;} int main(int argc, char **argv){ int i,j,k; while(cin >> n) { if(!n) break; cin >> m >> g; for(i = 1; i <= m; i++) cin >> t[i]; for(i = 0; i < n; i++) { cin >> s[i].name >> j; s[i].value = 0; int tem; for(k = 0; k < j; k++) { cin >> tem; s[i].value += t[tem]; } } qsort(s, n, sizeof(ss), cmp); for(i = 0; i < n; i++) if(s[i].value < g) break; cout << i << endl; for(j = 0; j < i; j++) cout << s[j].name << " " << s[j].value << endl; } return 0;}/************************************************************** Problem: 1014 User: 旺仔 Language: C++ Result: Accepted Time:560 ms Memory:1556 kb****************************************************************/