#include<map>#include<cstdio>#include<vector>usingnamespace std;#defineMAXN4005#defineMAXM150005#defineintlonglongstructnode{int id, s, a, b, f, c, ans;char sex, test;}s[MAXN];structnoded{int date, sh, sm, ss, th, tm, ts, a, b, s;double l;noded(){sh = sm = ss = th = tm = ts =0;}}doc[MAXM];
vector <int> G[MAXN];
map <int,int> mp;int n, m, ans;int day[15];intRun(char sex,int t ){if( sex =='M'){if( t <=1230)return20;if( t <=1300)return18;if( t <=1330)return16;if( t <=1400)return14;if( t <=1430)return12;if( t <=1510)return10;if( t <=1550)return8;if( t <=1630)return6;if( t <=1710)return4;if( t <=1800)return2;}else{if( t <=640)return20;if( t <=657)return18;if( t <=714)return16;if( t <=731)return14;if( t <=750)return12;if( t <=805)return10;if( t <=820)return8;if( t <=835)return6;if( t <=850)return4;if( t <=900)return2;}return0;}voidinit(){day[1]= day[3]= day[5]= day[7]= day[8]= day[10]= day[12]=31;day[2]=28;day[4]= day[6]= day[9]= day[11]=30;}intDate(int s,int t ){int sm =( s %10000)/100, sd = s %100;int tm =( t %10000)/100, td = t %100;int sums = sd, sumt = td;for(int i =1;i < sm;i ++)sums += day[i];for(int i =1;i < tm;i ++)sumt += day[i];return sumt - sums;}intTime(int i ){int sh = doc[i].sh, sm = doc[i].sm, ss = doc[i].ss;int th = doc[i].th, tm = doc[i].tm, ts = doc[i].ts;if( sh > th ) th +=24;return th *3600+ tm *60+ ts - sh *3600- sm *60- ss;}intTime(int i,int j ){int sh = doc[i].th, sm = doc[i].tm, ss = doc[i].ts;int th = doc[j].sh, tm = doc[j].sm, ts = doc[j].ss;int date =Date( doc[i].date, doc[j].date );th += date *24;if( th < sh )return0;return th *3600+ tm *60+ ts - sh *3600- sm *60- ss;}intshine(int u ){int tot =0, last =0;for(int v =0;v < G[u].size();v ++){int i = G[u][v];doc[i].l *=1000;if( doc[i].l <3000&& s[u].sex =='M')continue;if( doc[i].l <1500&& s[u].sex =='F')continue;if( doc[i].l /Time( i )<2|| doc[i].l /Time( i )>5)continue;if( doc[i].a *60+ doc[i].b >270)continue;if( doc[i].l / doc[i].s >1.5)continue;if(Time( last, i )<21600)continue;tot ++, last = i;}return tot;}intSunRun(int x ){if( x >=21)return10;if( x >=19)return9;if( x >=17)return8;if( x >=14)return7;if( x >=11)return6;if( x >=7)return4;if( x >=3)return2;return0;}intItem(int x ){if( x >=18)return5;if( x >=15)return4;if( x >=12)return3;if( x >=9)return2;if( x >=6)return1;return0;}voidGrade(int x ){if( x >=95)printf("A\n");elseif( x >=90)printf("A-\n");elseif( x >=85)printf("B+\n");elseif( x >=80)printf("B\n");elseif( x >=77)printf("B-\n");elseif( x >=73)printf("C+\n");elseif( x >=70)printf("C\n");elseif( x >=67)printf("C-\n");elseif( x >=63)printf("D+\n");elseif( x >=60)printf("D\n");elseprintf("F\n");}signedmain(){init();scanf("%lld",&n );for(int i =1;i <= n;i ++){char pun;scanf("%lld %c %lld %lld%c%lld%c %c %lld %lld",&s[i].id,&s[i].sex,&s[i].s,&s[i].a,&pun,&s[i].b,&pun,&s[i].test,&s[i].f,&s[i].c );ans =0;ans += s[i].s;ans +=Run( s[i].sex, s[i].a *100+ s[i].b );if( s[i].test =='P') ans +=10;s[i].ans = ans;mp[s[i].id]= i;}scanf("%lld",&m );for(int i =1, id;i <= m;i ++){char pun;scanf("%lld %lld %lld:%lld:%lld %lld:%lld:%lld %lf %lld%c%lld%c %lld",&doc[i].date,&id,&doc[i].sh,&doc[i].sm,&doc[i].ss,&doc[i].th,&doc[i].tm,&doc[i].ts,&doc[i].l,&doc[i].a,&pun,&doc[i].b,&pun,&doc[i].s );G[mp[id]].push_back( i );}for(int i =1;i <= n;i ++){int tot =shine( i );s[i].ans +=SunRun( tot );s[i].ans +=Item( tot + s[i].c )+ s[i].f;}for(int i =1;i <= n;i ++)printf("%lld %lld ", s[i].id, s[i].ans ),Grade( s[i].ans );return0;}