#include <iostream>
#include <map>
using namespace std;
int main() {
int n, counter, max, pointer;
cin >> n;
bool flag;
map<string, int> result;
result["Isenbaev"] = 0;
string ar[3];
while(n--)
{
flag = false;
max = -1;
pointer = -1;
counter = 0;
cin >> ar[0];
cin >> ar[1];
cin >> ar[2];
if (ar[0] == "Isenbaev")
{
result[ar[1]] = 1;
result[ar[2]] = 1;
flag = true;
}
else if (ar[1] == "Isenbaev")
{
result[ar[0]] = 1;
result[ar[2]] = 1;
flag = true;
}
else if (ar[2] == "Isenbaev")
{
result[ar[0]] = 1;
result[ar[1]] = 1;
flag = true;
}
else for (int i = 0; i < 3; i++)
{
if (result[ar[i]] > max)
{
max = result[ar[i]];
pointer = i;
}
}
if (max != -1)
for (int i = 0; i < 3; i++)
{
if (i != pointer) result[ar[i]] = max + 1;
}
else if (!flag)
{
result[ar[0]]=-1;
result[ar[1]]=-1;
result[ar[2]]=-1;
}
}
for (map<string, int>::iterator it=result.begin(); it!=result.end(); ++it)
if (it->second == -1)
cout << it->first << " " << "undefined" << '\n';
else
cout << it->first << " " << it->second << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgbiwgY291bnRlciwgbWF4LCBwb2ludGVyOwoJY2luID4+IG47Cglib29sIGZsYWc7CgltYXA8c3RyaW5nLCBpbnQ+IHJlc3VsdDsKCXJlc3VsdFsiSXNlbmJhZXYiXSA9IDA7CglzdHJpbmcgYXJbM107Cgl3aGlsZShuLS0pCgl7CgkJZmxhZyA9IGZhbHNlOwoJCW1heCA9IC0xOwoJCXBvaW50ZXIgPSAtMTsKCQljb3VudGVyID0gMDsKCQljaW4gPj4gYXJbMF07CgkJY2luID4+IGFyWzFdOwoJCWNpbiA+PiBhclsyXTsKCQlpZiAoYXJbMF0gPT0gIklzZW5iYWV2IikgCgkJewoJCQlyZXN1bHRbYXJbMV1dID0gMTsKCQkJcmVzdWx0W2FyWzJdXSA9IDE7CgkJCWZsYWcgPSB0cnVlOwoJCX0KCQllbHNlIGlmIChhclsxXSA9PSAiSXNlbmJhZXYiKSAKCQl7CgkJCXJlc3VsdFthclswXV0gPSAxOwoJCQlyZXN1bHRbYXJbMl1dID0gMTsKCQkJZmxhZyA9IHRydWU7CgkJfQoJCWVsc2UgaWYgKGFyWzJdID09ICJJc2VuYmFldiIpIAoJCXsKCQkJcmVzdWx0W2FyWzBdXSA9IDE7CgkJCXJlc3VsdFthclsxXV0gPSAxOwoJCQlmbGFnID0gdHJ1ZTsKCQl9CgkJZWxzZSBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykKCQl7CgkJCWlmIChyZXN1bHRbYXJbaV1dID4gbWF4KQoJCQl7CgkJCQltYXggPSByZXN1bHRbYXJbaV1dOwoJCQkJcG9pbnRlciA9IGk7CgkJCX0KCQl9CgkJaWYgKG1heCAhPSAtMSkKCQlmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykKCQl7CgkJCWlmIChpICE9IHBvaW50ZXIpIHJlc3VsdFthcltpXV0gPSBtYXggKyAxOwoJCX0KCQllbHNlIGlmICghZmxhZykKCQl7CgkJCXJlc3VsdFthclswXV09LTE7CgkJCXJlc3VsdFthclsxXV09LTE7CgkJCXJlc3VsdFthclsyXV09LTE7CgkJfQoJfQoJZm9yIChtYXA8c3RyaW5nLCBpbnQ+OjppdGVyYXRvciBpdD1yZXN1bHQuYmVnaW4oKTsgaXQhPXJlc3VsdC5lbmQoKTsgKytpdCkKCQlpZiAoaXQtPnNlY29uZCA9PSAtMSkKICAgIAkJY291dCA8PCBpdC0+Zmlyc3QgPDwgIiAiIDw8ICJ1bmRlZmluZWQiIDw8ICdcbic7CiAgICAJCWVsc2UKICAgIAkJY291dCA8PCBpdC0+Zmlyc3QgPDwgIiAiIDw8IGl0LT5zZWNvbmQgPDwgJ1xuJzsKCQoJcmV0dXJuIDA7Cn0=
NwpJc2VuYmFldiBPcGFyaW4gVG9yb3BvdgpBeXplbnNodGV5biBPcGFyaW4gU2Ftc29ub3YKQXl6ZW5zaHRleW4gQ2hldmRhciBTYW1zb25vdgpGb21pbnlraCBJc2VuYmFldiBPcGFyaW4KRHVibGVubnlraCBGb21pbnlraCBJdmFua292CkJ1cm1pc3Ryb3YgRHVibGVubnlraCBLdXJwaWx5YW5za2l5CkNvcm1lbiBMZWlzZXJzb24gUml2ZXN0
7
Isenbaev Oparin Toropov
Ayzenshteyn Oparin Samsonov
Ayzenshteyn Chevdar Samsonov
Fominykh Isenbaev Oparin
Dublennykh Fominykh Ivankov
Burmistrov Dublennykh Kurpilyanskiy
Cormen Leiserson Rivest