#include<bits/stdc++.h>
using namespace std;
int string_to_int(string);
int day_to_int(int s){
int mon=s/100,day=s%100;
int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int res=0;
for(int i=1;i<=mon-1;i++) res+=month[i];
res+=day;
return res;
}
struct record{
int date=0;
long long number=0;
int start_time=0,end_time=0;
int total_time=0;
int run_dis=0;
int pause_time=0;
int step_num=0;
};
struct student{
long long number=0;
bool male=0;
int P_E_score=0;
int long_run_time=0,long_run_score=0;
vector<record> run_re;
int sunny_run_score=0;
int ok_time,class_training_time=0;
inline int get_stopping_time(int i,int last){
return run_re[i].start_time-run_re[last].end_time;
}
void get_sunny_run_score(){
ok_time=0;
int last=-1;
for(int i=0;i<=run_re.size();i++){
if(run_re[i].run_dis<(male?3000:1500)) continue;
if(run_re[i].run_dis*1.0/run_re[i].total_time<2||run_re[i].run_dis*1.0/run_re[i].total_time>5) continue;
if(run_re[i].pause_time>270) continue;
if(run_re[i].run_dis*1.0/run_re[i].step_num>1.5) continue;
if(i==0||last==-1){
ok_time++;
last=i;
continue;
}
if(run_re[i].date!=run_re[last].date){
if(day_to_int(run_re[i].date)-day_to_int(run_re[last].date)>1){
ok_time++;
last=i;
continue;
}
if(run_re[i].start_time+24*3600-run_re[last].end_time>=6*3600){
ok_time++;
last=i;
continue;
}
}else{
if(get_stopping_time(i,last)>=3600*6){
ok_time++;
last=i;
continue;
}
}
}
if(ok_time<=2) sunny_run_score=0;
else if(ok_time<=6) sunny_run_score=2;
else if(ok_time<=10) sunny_run_score=4;
else if(ok_time<=13) sunny_run_score=6;
else if(ok_time<=16) sunny_run_score=7;
else if(ok_time<=18) sunny_run_score=8;
else if(ok_time<=20) sunny_run_score=9;
else sunny_run_score=10;
}
int body_score=0;
int go_out=0,go_out_score=0,final_exam=0;
int total=0;
string grade="";
};
int n,m;
student st[10010];
string tmp;
record rp;
bool cmp(student a,student b){
return a.number<b.number;
}
inline int change(int m,int s){return m*60+s;}
int pn,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
char c,cc;
int main(){
scanf("%d",&n);
getchar();
for(int i=1;i<=n;i++){
scanf("%lld %c %d %d'%d\" %c %d %d",&st[i].number,&c,&st[i].P_E_score,&t1,&t2,&cc,&st[i].final_exam,&st[i].class_training_time);
st[i].male=(c=='M');
st[i].run_re.clear();
st[i].long_run_time=t1*60+t2;
st[i].body_score=(cc=='P')*10;
if(st[i].male){
if(st[i].long_run_time<=change(12,30)) st[i].long_run_score=20;
else if(st[i].long_run_time<=change(13,0)) st[i].long_run_score=18;
else if(st[i].long_run_time<=change(13,30)) st[i].long_run_score=16;
else if(st[i].long_run_time<=change(14,0)) st[i].long_run_score=14;
else if(st[i].long_run_time<=change(14,30)) st[i].long_run_score=12;
else if(st[i].long_run_time<=change(15,10)) st[i].long_run_score=10;
else if(st[i].long_run_time<=change(15,50)) st[i].long_run_score=8;
else if(st[i].long_run_time<=change(16,30)) st[i].long_run_score=6;
else if(st[i].long_run_time<=change(17,10)) st[i].long_run_score=4;
else if(st[i].long_run_time<=change(18,0)) st[i].long_run_score=2;
else st[i].long_run_score=0;
}else{
if(st[i].long_run_time<=change(6,40)) st[i].long_run_score=20;
else if(st[i].long_run_time<=change(6,57)) st[i].long_run_score=18;
else if(st[i].long_run_time<=change(7,14)) st[i].long_run_score=16;
else if(st[i].long_run_time<=change(7,31)) st[i].long_run_score=14;
else if(st[i].long_run_time<=change(7,50)) st[i].long_run_score=12;
else if(st[i].long_run_time<=change(8,5)) st[i].long_run_score=10;
else if(st[i].long_run_time<=change(8,20)) st[i].long_run_score=8;
else if(st[i].long_run_time<=change(8,35)) st[i].long_run_score=6;
else if(st[i].long_run_time<=change(8,50)) st[i].long_run_score=4;
else if(st[i].long_run_time<=change(9,0)) st[i].long_run_score=2;
else st[i].long_run_score=0;
}
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d %lld %d:%d:%d %d:%d:%d %d.%d %d'%d\" %d",&rp.date,&rp.number,&t1,&t2,&t3,&t4,&t5,&t6,&t9,&t10,&t7,&t8,&rp.step_num);
pn=0;
for(int j=1;j<=n;j++)
if(st[j].number==rp.number){
pn=j;
break;
}
rp.run_dis=t9*1000+t10*10;
rp.date-=20170000;
rp.start_time=t1*3600+t2*60+t3;
rp.end_time=t4*3600+t5*60+t6;
rp.pause_time=t7*60+t8;
rp.total_time=rp.end_time-rp.start_time;
st[pn].run_re.push_back(rp);
}
for(int i=1;i<=n;i++){
st[i].get_sunny_run_score();
st[i].go_out=st[i].class_training_time+st[i].ok_time;
if(st[i].go_out<=5) st[i].go_out_score=0;
else if(st[i].go_out<=8) st[i].go_out_score=1;
else if(st[i].go_out<=11) st[i].go_out_score=2;
else if(st[i].go_out<=14) st[i].go_out_score=3;
else if(st[i].go_out<=17) st[i].go_out_score=4;
else st[i].go_out_score=5;
st[i].total=st[i].P_E_score+st[i].sunny_run_score+st[i].long_run_score+st[i].body_score+st[i].final_exam+st[i].go_out_score;
}
sort(st+1,st+1+n,cmp);
for(int i=1;i<=n;i++){
if(st[i].total>=95) st[i].grade="A";
else if(st[i].total>=90) st[i].grade="A-";
else if(st[i].total>=85) st[i].grade="B+";
else if(st[i].total>=80) st[i].grade="B";
else if(st[i].total>=77) st[i].grade="B-";
else if(st[i].total>=73) st[i].grade="C+";
else if(st[i].total>=70) st[i].grade="C";
else if(st[i].total>=67) st[i].grade="C-";
else if(st[i].total>=63) st[i].grade="D+";
else if(st[i].total>=60) st[i].grade="D";
else if(st[i].total>=0) st[i].grade="F";
cout<<st[i].number<<" "<<st[i].total<<" "<<st[i].grade<<endl;
}
}