#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct _log{
    char name[50];  //文件名
    int line;       //行数
    int count;      //出现次数
    int namelength; //名字长度
    int appear;     //出现位置
} mylog, *plog;     //日志参数结构体


int main() {
    plog addr[1000];    //指针数组
    int curaddr = 0;
    char str[50];
    int line;
    int i, j;
    int n = 0;
    int dash = 0;
    int flag = 0;
    int namelength;
    memset(str, 0, sizeof(str));
    while(scanf("%s", str) != EOF){
        scanf("%d", &line);
        for(j = 0; j < 50; j++){    //解析文件名和文件名长度
            if(str[j] == '\0'){
                namelength = j - dash - 1;
                break;
            }
            if(str[j] == '\\'){
                dash = j;
            }
        }
        for(i = 0; i < curaddr; i++){   //检测文件名是否出现过
            
            if((!memcmp(&str[dash+1], addr[i]->name, namelength)) && (line == addr[i]->line))
            {
                addr[i]->count++;
                flag = 1;
                break;
            }
        }
        if(flag == 0){      //新建日志
            addr[curaddr] = malloc(sizeof(mylog));
            addr[curaddr]->line = line;
            addr[curaddr]->count = 1;
            addr[curaddr]->namelength = namelength;
            memcpy(addr[curaddr]->name, &str[dash + 1], addr[curaddr]->namelength);
            addr[curaddr]->appear = n;

            n++;
            curaddr++;
        }
        flag = 0;
        memset(str, 0, sizeof(str));
    }

    for(i = 0; i < curaddr - 1; i++){   //排序
        for (j = curaddr - 1; j > i; j--){
            if((addr[j]->count > addr[j - 1]-> count) 
            || ((addr[j]->count == addr[j - 1]-> count) && (addr[j]->appear < addr[j - 1]-> appear)))
            {
                plog temp = addr[j];
                addr[j] = addr[j - 1];
                addr[j - 1] = temp;
            }
        }
    }

    int begin = 0;
    if(curaddr > 8) curaddr = 8;
    for(i = 0; i < curaddr; i++){   //输出
        if(addr[i]->namelength < 16) begin = 0;
        else begin = addr[i]->namelength - 16;
        printf("%s %d %d\n", &(addr[i]->name[begin]), addr[i]->line, addr[i]->count);
    }
}