#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define st 0.00001
struct s1{
double score;
int num;
};
struct s2{
string sch;
double score;
int num;
int ra;
};
bool cmp(const s2 &a,const s2 &b){
if(a.score-b.score<-st){
return false;
}else if(a.score-b.score>st){
return true;
}else{
if(a.num<b.num){
return true;
}else if(a.num>b.num){
return false;
}else{
return a.sch<b.sch;
}
}
}
double abs(double a){
return a>0?a:-a;
}
int main()
{
int n;
map<string,s1> a;
scanf("%d",&n);
for(int i=0;i<n;i++){
string id,sch;
char ID[7],SCH[7];
double score;
scanf("%s %lf %s",ID,&score,SCH);
id=ID;
for(int j=0;j<strlen(SCH);j++){
if(SCH[j]>='A'&&SCH[j]<='Z'){
SCH[j]=SCH[j]-'A'+'a';
}
}
sch=SCH;
if(id[0]=='B'){
score/=1.5;
}else if(id[0]=='T'){
score*=1.5;
}
if(a.count(sch)==0){
s1 t;
t.num=1;
t.score=score;
a[sch]=t;
}else{
a[sch].num++;
a[sch].score+=score;
}
}
map<string,s1>::iterator iter;
vector<s2> res;
int i=0;
for(iter=a.begin();iter!=a.end();iter++,i++){
s2 t;
t.sch=iter->first;
t.num=iter->second.num;
t.score=(int)iter->second.score;
res.push_back(t);
}
sort(res.begin(),res.end(),cmp);
printf("%d\n",res.size());
for(i=0;i<res.size();i++){
res[i].ra=i+1;
if(i!=0&&abs(res[i].score-res[i-1].score)<st){
res[i].ra=res[i-1].ra;
}
char scht[7];
int j;
for(j=0;j<res[i].sch.size();j++){
scht[j]=res[i].sch[j];
}
scht[j]='\0';
printf("%d %s %d %d\n",res[i].ra,scht,(int)res[i].score,res[i].num);
}
return 0;
}