1 #include <iostream>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cmath>
5 #include <cctype>
6 #include <cstring>
7
8 #include <vector>
9 #include <deque>
10 #include <list>
11 #include <map>
12 #include <set>
13 #include <stack>
14 #include <queue>
15 #include <algorithm>
16 #include <string>
17
18
19 #define MAXD 99999999
20 using namespace std;
21
22
23
24 double re[40];
25
26 int vis[40];
27
28
29 double maxp;
30
31
32
33 int dfs(int v,double p,double q,int n)
34 {
35
36 if(p>q)
37 return 0;
38
39 if(p>maxp)
40 maxp=p;
41
42
43 int i;
44 for(i=0;i<n;i++)
45 {
46 if(vis[i]==0)
47 {
48 vis[i]=1;
49 dfs(i,p+re[i],q,n);
50 vis[i]=0;
51 }
52 }
53
54 return 0;
55 }
56
57
58
59
60
61 int main()
62 {
63
64
65 double q;
66
67 int n;
68
69
70
71 int i,j,k;
72
73 while(scanf("%lf%d",&q,&n)!=EOF)
74 {
75 if(n==0)
76 break;
77
78 k=0;
79
80
81 for(i=0;i<n;i++)
82 {
83 int m;
84
85 double sum=0;
86
87
88 scanf("%d",&m);
89
90
91 int tag=0;
92
93 for(j=0;j<m;j++)
94 {
95 char ty;
96 double p;
97
98 scanf(" %c:%lf",&ty,&p);
99
100
101 if(((ty=='A')||(ty=='B')||(ty=='C'))&&(tag==0))
102 {
103 if(p<=600)
104 {
105 sum+=p;
106 }
107 else
108 {
109 tag=1;
110 }
111 }
112 else
113 {tag=1;}
114
115
116
117 }
118
119
120 if(tag==0)
121 {
122
123 if(sum<=1000)
124 {
125 re[k++]=sum;
126 }
127 }
128 }
129
130
131 for(i=0;i<k;i++)
132 {
133 vis[i]=0;
134 }
135
136
137
138
139 maxp=0;
140
141
142 dfs(0,0,q,k);
143
144 printf("%.2lf\n",maxp);
145 }
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167 return 0;
168 }