#include <iostream>
#include <sstream>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include <queue>
using namespace std;

struct Record {
    string name;
    int line;
    int cnt;
    Record(string _name, int _line, int _cnt):name(_name),line(_line),cnt(_cnt){
    }
};

int main() {
    string path;
    int line;
    // name line count
    unordered_map<string, Record*> hash;
    queue<string> q;
    while (cin >> path >> line) { // 注意 while 处理多个 case
        stringstream ss(path);
        string name;
        while(getline(ss, name,'\\')){}
        int pos = name.size() - 16;
        string newName;
        if(pos > 0){
            newName = name.substr(pos, 16);
        } else {
            newName = name;
        }
        string key = newName + to_string(line);
        if(hash.count(key) > 0){
            hash[key]->cnt++;
        } else {
            hash[key] = new Record(newName,line,1);
            q.push(key);
            if(q.size() > 8){
                q.pop();
            }
        }
    }
    while(!q.empty()){
        auto rcd = hash[q.front()];q.pop();
        cout << rcd->name << " " << rcd->line << " " << rcd->cnt << endl;    
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

使用队列用来记录,哈希表用来去重