#include<bits/stdc++.h>
using namespace std;
struct stu
{
string id,lrun;
char op,tzcs;
int zhx,qmjc,bjxly,ygcp;
}mark[10010];
struct rn
{
string date,id,bg,nd,stop;
double l;
int step;
}runn[150000];
struct cj
{
string id,dj;
int a,b,c,d,e;
}chj[10010];
int n,m,day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
map<string,int>mp;
map<int,int>vis;
map<int,pair<string,string> >last;
bool cmp(int mt1,int sd1,int mt2,int sd2)
{
int tm1=mt1*60+sd1,tm2=mt2*60+sd2;
return tm1<=tm2;
}
bool date_cmp(int lmon,int lday,int ltm,int nmon,int nday,int ntm)
{
if (lmon!=nmon) return lmon<=nmon;
if (lday!=nday) return lday<=nday;
return ltm<=ntm;
}
bool check(int id)
{
if (mark[mp[runn[id].id]].op=='M') if (runn[id].l<3000.0) return false;
if (mark[mp[runn[id].id]].op=='F') if (runn[id].l<1500.0) return false;
string ll=runn[id].bg,rr=runn[id].nd;
int lt=((ll[0]-'0')*10+(ll[1]-'0'))*3600+((ll[3]-'0')*10+(ll[4]-'0'))*60+((ll[6]-'0')*10+(ll[7]-'0'));
int rt=((rr[0]-'0')*10+(rr[1]-'0'))*3600+((rr[3]-'0')*10+(rr[4]-'0'))*60+((rr[6]-'0')*10+(rr[7]-'0'));
double sm1=runn[id].l/((double)rt-(double)lt);
if (sm1<2.0||sm1>5.0) return false;
string stp=runn[id].stop;
int mt=0,sd=0;
int fg=0;
for (int i=0;i<(int)stp.size();i++)
{
if (!(stp[i]>='0'&&stp[i]<='9'))
{
fg++;
continue;
}
if (!fg) mt=mt*10+(stp[i]-'0');
if (fg==1) sd=sd*10+(stp[i]-'0');
}
if (!cmp(mt,sd,4,30)) return false;
double sm2=runn[id].l/(double)runn[id].step;
if (sm2>1.5) return false;
string last_date=last[mp[runn[id].id]].first;
string last_tm=last[mp[runn[id].id]].second;
int last_tim=((last_tm[0]-'0')*10+(last_tm[1]-'0'))*3600+((last_tm[3]-'0')*10+(last_tm[4]-'0')*60+((last_tm[6]-'0')*10+(last_tm[7]-'0')));
last_tim+=(6*60*60);
int lmon,lday;
if (last_tim>=24*60*60)
{
lmon=(last_date[4]-'0')*10+(last_date[5]-'0');
lday=(last_date[6]-'0')*10+(last_date[7]-'0');
if (lday==day[lmon])
{
if (lmon==12) lmon=1;
else lmon++;
lday=1;
}
else lday++;
last_tim-=(6*60*60);
}
string nwdate=runn[id].date;
int nmon=(nwdate[4]-'0')*10+(nwdate[5]-'0'),nday=(nwdate[6]-'0')*10+(nwdate[7]-'0');
if (!date_cmp(lmon,lday,last_tim,nmon,nday,lt)) return false;
return true;
}
void calc1(int id)
{
string tm=mark[id].lrun;
int mt=0,sd=0;
int fg=0;
for (int i=0;i<(int)tm.size();i++)
{
if (!(tm[i]>='0'&&tm[i]<='9'))
{
fg++;
continue;
}
if (!fg) mt=mt*10+(tm[i]-'0');
if (fg==1) sd=sd*10+(tm[i]-'0');
}
if (mark[id].op=='M')
{
if (cmp(mt,sd,12,30)) chj[id].b=20;
else if (cmp(mt,sd,13,0)) chj[id].b=18;
else if (cmp(mt,sd,13,30)) chj[id].b=16;
else if (cmp(mt,sd,14,0)) chj[id].b=14;
else if (cmp(mt,sd,14,30)) chj[id].b=12;
else if (cmp(mt,sd,15,10)) chj[id].b=10;
else if (cmp(mt,sd,15,50)) chj[id].b=8;
else if (cmp(mt,sd,16,30)) chj[id].b=6;
else if (cmp(mt,sd,17,10)) chj[id].b=4;
else if (cmp(mt,sd,18,0)) chj[id].b=2;
}
else
{
if (cmp(mt,sd,6,40)) chj[id].b=20;
else if (cmp(mt,sd,6,57)) chj[id].b=18;
else if (cmp(mt,sd,7,14)) chj[id].b=16;
else if (cmp(mt,sd,7,31)) chj[id].b=14;
else if (cmp(mt,sd,7,50)) chj[id].b=12;
else if (cmp(mt,sd,8,5)) chj[id].b=10;
else if (cmp(mt,sd,8,20)) chj[id].b=8;
else if (cmp(mt,sd,8,35)) chj[id].b=6;
else if (cmp(mt,sd,8,50)) chj[id].b=4;
else if (cmp(mt,sd,9,0)) chj[id].b=2;
}
}
void calc2(int id)
{
if (mark[id].ygcp>=21) chj[id].c=10;
else if (mark[id].ygcp>=19) chj[id].c=9;
else if (mark[id].ygcp>=17) chj[id].c=8;
else if (mark[id].ygcp>=14) chj[id].c=7;
else if (mark[id].ygcp>=11) chj[id].c=6;
else if (mark[id].ygcp>=7) chj[id].c=4;
else if (mark[id].ygcp>=3) chj[id].c=2;
}
void calc3(int id)
{
int sm=mark[id].bjxly+mark[id].ygcp;
if (sm>=18) chj[id].e+=5;
else if (sm>=15) chj[id].e+=4;
else if (sm>=12) chj[id].e+=3;
else if (sm>=9) chj[id].e+=2;
else if (sm>=6) chj[id].e+=1;
}
void calc4(int id)
{
int sm=chj[id].a+chj[id].b+chj[id].c+chj[id].d+chj[id].e;
chj[id].dj="";
if (sm>=95) chj[id].dj+='A';
else if (sm>=90) chj[id].dj+="A-";
else if (sm>=85) chj[id].dj+="B+";
else if (sm>=80) chj[id].dj+='B';
else if (sm>=77) chj[id].dj+="B-";
else if (sm>=73) chj[id].dj+="C+";
else if (sm>=70) chj[id].dj+='C';
else if (sm>=67) chj[id].dj+="C-";
else if (sm>=63) chj[id].dj+="D+";
else if (sm>=60) chj[id].dj+='D';
else chj[id].dj+='F';
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for (int i=0;i<n;i++)
{
cin>>mark[i].id>>mark[i].op>>mark[i].zhx>>mark[i].lrun>>mark[i].tzcs>>mark[i].qmjc>>mark[i].bjxly;
mp[mark[i].id]=i;
}
cin>>m;
for (int i=0;i<m;i++) cin>>runn[i].date>>runn[i].id>>runn[i].bg>>runn[i].nd>>runn[i].l>>runn[i].stop>>runn[i].step;
for (int i=0;i<m;i++)
{
if (check(i))
{
mark[mp[runn[i].id]].ygcp++;
vis[mp[runn[i].id]]=1;
last[mp[runn[i].id]]=make_pair(runn[i].date,runn[i].nd);
}
}
for (int i=0;i<n;i++)
{
chj[i].id="";
chj[i].id+=mark[i].id;
chj[i].a=mark[i].zhx;
calc1(i);
calc2(i);
if (mark[i].tzcs=='P') chj[i].d=10;
else chj[i].d=0;
chj[i].e+=mark[i].qmjc;
calc3(i);
calc4(i);
cout<<chj[i].id<<" "<<chj[i].a+chj[i].b+chj[i].c+chj[i].d+chj[i].e<<" "<<chj[i].dj<<'\n';
}
return 0;
}