#include<bits/stdc++.h>
using namespace std;
int n,m;
struct node
{
int number,sexual,yg,sum2;
int score;
}a[10005];
bool cmp(node a,node b)
{
return a.number<b.number;
}
int girl_score(int a)
{
if(a<=340)
return 20;
if(a<=357)
return 18;
if(a<=434)
return 16;
if(a<=451)
return 14;
if(a<=470)
return 12;
if(a<=485)
return 10;
if(a<=500)
return 8;
if(a<=515)
return 6;
if(a<=530)
return 4;
if(a<=540)
return 2;
return 0;
}
int boy_score(int a)
{
if(a<=750)
return 20;
if(a<=780)
return 18;
if(a<=810)
return 16;
if(a<=840)
return 14;
if(a<=870)
return 12;
if(a<=910)
return 10;
if(a<=950)
return 8;
if(a<=990)
return 6;
if(a<=1030)
return 4;
if(a<=1080)
return 2;
return 0;
}
int get_score_r(int a,int m)
{
return m==0?boy_score(a):girl_score(a);
}
int get_time(int h1,int h2,int m1,int m2,int s1,int s2)
{
return abs((h2-h1)*60*60+(m2-m1)*60+(s2-s1));
}
int get_num(int num)
{
for(int i=1;i<=n;i++)
{
if(a[i].number==num)
return i;
}
}
int sunshine_score(int a)
{
if(a>=21)
return 10;
if(a>=19&&a<=20)
return 9;
if(a>=17&&a<=18)
return 8;
if(a>=14&&a<=16)
return 7;
if(a>=11&&a<=13)
return 6;
if(a>=7&&a<=10)
return 4;
if(a>=3&&a<=6)
return 2;
return 0;
}
void init()
{
cin>>n;
for(int i=1;i<=n;i++)
{
char bg,ok,tmp;
int minutes,seconds,sc;
cin>>a[i].number>>bg>>a[i].score>>minutes>>tmp>>seconds>>tmp>>ok>>sc>>a[i].sum2;
a[i].sexual=(bg=='M')?0:1;
a[i].score+=(ok=='P')?10:0+sc;
a[i].score+=get_score_r(60*minutes+seconds,a[i].sexual);
}
sort(a+1,a+n+1,cmp);
/*
for(int i=1;i<=n;i++)
{
cout<<a[i].number<<" "<<a[i].score<<endl;
}
*/
}
int last_score(int x)
{
if(x>=18)
return 5;
if(x>=15&&x<=17)
return 4;
if(x>=12&&x<=14)
return 3;
if(x>=9&&x<=11)
return 2;
if(x>=6&&x<=8)
return 1;
return 0;
}
int grade(int score)
{
if(score<=100&&score>=95)
return 0;
if(score<95&&score>=90)
return 1;
if(score<90&&score>=85)
return 2;
if(score<85&&score>=80)
return 3;
if(score<80&&score>=77)
return 4;
if(score<77&&score>=73)
return 5;
if(score<73&&score>=70)
return 6;
if(score<70&&score>=67)
return 7;
if(score<67&&score>=63)
return 8;
if(score<63&&score>=60)
return 9;
if(score<60)
return 10;
}
bool check(int xb,int meter,double v,int se,int bf)
{
if(xb==0)
{
if(meter<3000)
return false;
}
if(xb==1)
{
if(meter<1500)
return false;
}
if(v<2.00||v>5.00)
return false;
if(se>270)
return false;
return true;
}
void solve1()
{
cin>>m;
int lastd=0,lasth=0,lastm=0,lasts=0;
for(int i=1;i<=m;i++)
{
bool flag=true;
int date,num,h1,h2,m1,m2,s1,s2,meters,fo,r1,r2;
double kmeters,bp,v;
char tmp;
cin>>date>>num>>h1>>tmp>>m1>>tmp>>s1;
cin>>h2>>tmp>>m2>>tmp>>s2>>kmeters>>r1>>tmp>>r2>>tmp>>fo;
meters=int(1000*kmeters),bp=1.00*meters/fo;
int pos=get_num(num),time=get_time(h1,h2,m1,m2,s1,s2);
v=1.00*meters/time*1.00;
//meters 米 bp 步频 pos 点 time 时间 v 速度
//cout<<pos<<endl<<bp<<endl<<time<<endl<<v<<endl;
if(i!=1)
{
if(date-lastd<2)
{
if(date-lastd==1)
{
lastd+=1,lasth-=24;
}
int cha=get_time(lasth,h1,lastm,m1,lasts,s1);
if(cha<6*60*60)
flag=false;
lastd-=1,lasth+=24;
//cout<<cha<<endl;
}
}
if(flag==true)
flag=check(a[pos].sexual,meters,v,r1*60+r2,bp);
if(flag==true)
lastd=date,lasth=h2,lastm=m2,lasts=s2,a[pos].yg++;
}
}
void solve2()
{
for(int i=1;i<=n;i++)
{
a[i].score+=sunshine_score(a[i].yg),a[i].score+=last_score(a[i].yg+a[i].sum2);
cout<<a[i].number<<" "<<a[i].score<<" ";
int grades=grade(a[i].score);
if(grades==0)
cout<<"A"<<endl;
if(grades==1)
cout<<"A-"<<endl;
if(grades==2)
cout<<"B+"<<endl;
if(grades==3)
cout<<"B"<<endl;
if(grades==4)
cout<<"B-"<<endl;
if(grades==5)
cout<<"C+"<<endl;
if(grades==6)
cout<<"C"<<endl;
if(grades==7)
cout<<"C-"<<endl;
if(grades==8)
cout<<"D+"<<endl;
if(grades==9)
cout<<"D"<<endl;
if(grades==10)
cout<<"F"<<endl;
}
}
void work()
{
init();
solve1();
solve2();
}
int main()
{
// cout<<get_time(0,24,0,0,0,0);
work();
return 0;
}