import java.util.*;
class MyObject{
String name;
String hang;
int count;
public MyObject(){}
public String getName(){
return this.name;
}
public String getHang(){
return this.hang;
}
public void setHang(String hang){
this.hang=hang;
}
public int getCount(){
return this.count;
}
public void setName(String name){
this.name=name;
}
public void setCount(int count){
this.count=count;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<MyObject> ob=new ArrayList<MyObject>();
while(sc.hasNext()){
String line=sc.nextLine();
String[] s=line.split("\\\\");
String[] sa=s[s.length-1].split(" ");
String name=sa[0];
String hang=sa[sa.length-1];
int flag=0;
//获取到name与count以后就与原来的值进行比较,如果有相同的,就将那个的count+1,否则就新增数据.之后保留最新的8个数据,同时判断长度大于16的值保留16个字符。
for(int i=0;i<ob.size();i++){
if(ob.get(i).getName().equals(name)&&ob.get(i).getHang().equals(hang)){
MyObject ob1=new MyObject();
ob1=ob.get(i);
ob1.setCount(ob1.getCount()+1);
ob.set(i, ob1);
flag=1;
break;
}
}
//没有找到重复的
if(flag==0){
MyObject ob1=new MyObject();
ob1.setCount(1);
ob1.setHang(hang);
int lenname=name.length();
ob1.setName(name);
ob.add(ob1);
}
//排序
for(int i=0;i<ob.size();i++){
for(int j=i+1;j<ob.size();j++){
if(ob.get(i).getCount()<ob.get(j).getCount()){
MyObject obl=new MyObject();
obl.setName(ob.get(i).getName());
obl.setHang(ob.get(i).getHang());
obl.setCount(ob.get(i).getCount());
ob.set(i, ob.get(j));
ob.set(j, obl);
}
}
}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
String ss=ob.get(i).getName();
if(ss.length()>16){
ss=ss.substring(ss.length()-16, ss.length());
MyObject obs=new MyObject();
obs=ob.get(i);
obs.setName(ss);
ob.set(i, obs);
}
}
}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
System.out.println(ob.get(i).getName()+" "+ob.get(i).getHang()+" "+ob.get(i).getCount());
}
}
class MyObject{
String name;
String hang;
int count;
public MyObject(){}
public String getName(){
return this.name;
}
public String getHang(){
return this.hang;
}
public void setHang(String hang){
this.hang=hang;
}
public int getCount(){
return this.count;
}
public void setName(String name){
this.name=name;
}
public void setCount(int count){
this.count=count;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<MyObject> ob=new ArrayList<MyObject>();
while(sc.hasNext()){
String line=sc.nextLine();
String[] s=line.split("\\\\");
String[] sa=s[s.length-1].split(" ");
String name=sa[0];
String hang=sa[sa.length-1];
int flag=0;
//获取到name与count以后就与原来的值进行比较,如果有相同的,就将那个的count+1,否则就新增数据.之后保留最新的8个数据,同时判断长度大于16的值保留16个字符。
for(int i=0;i<ob.size();i++){
if(ob.get(i).getName().equals(name)&&ob.get(i).getHang().equals(hang)){
MyObject ob1=new MyObject();
ob1=ob.get(i);
ob1.setCount(ob1.getCount()+1);
ob.set(i, ob1);
flag=1;
break;
}
}
//没有找到重复的
if(flag==0){
MyObject ob1=new MyObject();
ob1.setCount(1);
ob1.setHang(hang);
int lenname=name.length();
ob1.setName(name);
ob.add(ob1);
}
//排序
for(int i=0;i<ob.size();i++){
for(int j=i+1;j<ob.size();j++){
if(ob.get(i).getCount()<ob.get(j).getCount()){
MyObject obl=new MyObject();
obl.setName(ob.get(i).getName());
obl.setHang(ob.get(i).getHang());
obl.setCount(ob.get(i).getCount());
ob.set(i, ob.get(j));
ob.set(j, obl);
}
}
}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
String ss=ob.get(i).getName();
if(ss.length()>16){
ss=ss.substring(ss.length()-16, ss.length());
MyObject obs=new MyObject();
obs=ob.get(i);
obs.setName(ss);
ob.set(i, obs);
}
}
}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
System.out.println(ob.get(i).getName()+" "+ob.get(i).getHang()+" "+ob.get(i).getCount());
}
}
}