#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
long long int n,i,count,total=0,sum,j,sumfinal,k,flag,z;
string str,str1,str2;
map<long long int,string> m;
//map<int,vector<int>>mp;
map<long long int,string>::iterator itr,itr1;
cin>>n;
for(j=0;j<n;j++){
cin>>str;
if(str[0]=='A')
{ //cout<<total<<endl;
//if(total<=19){
sum=0;
count=1;
if(str[4]!=NULL){
//cout<<"hey"<<endl;
for(i=4;i<str.size();i++) {
sum+=int(str[i])*count;
count++;
}
sum*=19;
sum%=101;
str1=str.substr(4,str.size());
//cout<<sum<<endl;
//if(m.find(sum)==m.end())
//{
//m[sum]=str1;
//total++;
//}
//else
//{
//itr=m.find(sum);
//if(str1!=itr->second){
flag=0;
z=-1;
for(k=0;k<=19;k++)
{
if(k==0){
sumfinal=sum;
}
else{
sumfinal=(sum+(k*k)+(23*k))%101;
}
//cout<<sum<<endl;
if(m.find(sumfinal)==m.end()&& z==-1)
{
z=sumfinal;
}
else{
if(m.find(sumfinal)!=m.end())
{
itr=m.find(sumfinal);
if(str1==itr->second)
{ //cout<<str1<<"str1"<<endl;
flag=1;
break;
}
}
}
}
if(!flag && z!=-1){
m[z]=str1;
total++;
}
}//}
}
else{
str1=str.substr(4,str.size());
sum=0;
count=1;
for(i=4;i<str.size();i++) {
sum+=int(str[i])*count;
//cout<<sum<<"sum"<<endl;
count++;
}
sum*=19;
sum%=101;
if(m.find(sum)!=m.end())
{
itr=m.find(sum);
if(str1==itr->second){
total--;
m.erase(sum);
}
else{
for(k=1;k<=19;k++)
{
sumfinal=(sum+(k*k)+(23*k))%101;
if(m.find(sumfinal)!=m.end())
{
itr1=m.find(sumfinal);
if(str1==itr1->second){
total--;
m.erase(sumfinal);
break;
}
}
}
}
}
}
}
cout<<total<<endl;
for(itr=m.begin();itr!=m.end();++itr){
cout<<itr->first<<":"<<itr->second<<endl;
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewoKaW50IHQ7CmNpbj4+dDsKd2hpbGUodC0tKXsKbG9uZyBsb25nIGludCBuLGksY291bnQsdG90YWw9MCxzdW0saixzdW1maW5hbCxrLGZsYWcsejsKc3RyaW5nIHN0cixzdHIxLHN0cjI7Cm1hcDxsb25nIGxvbmcgaW50LHN0cmluZz4gbTsKLy9tYXA8aW50LHZlY3RvcjxpbnQ+Pm1wOwptYXA8bG9uZyBsb25nIGludCxzdHJpbmc+OjppdGVyYXRvciBpdHIsaXRyMTsKCmNpbj4+bjsKZm9yKGo9MDtqPG47aisrKXsKICAgY2luPj5zdHI7CiAgaWYoc3RyWzBdPT0nQScpCgp7ICAvL2NvdXQ8PHRvdGFsPDxlbmRsOwogICAgLy9pZih0b3RhbDw9MTkpewogICAgc3VtPTA7CiAgICBjb3VudD0xOwoKICAgIGlmKHN0cls0XSE9TlVMTCl7CiAgICAgICAgLy9jb3V0PDwiaGV5Ijw8ZW5kbDsKICAgZm9yKGk9NDtpPHN0ci5zaXplKCk7aSsrKSB7CiAgICAgICBzdW0rPWludChzdHJbaV0pKmNvdW50OwogICAgICAgY291bnQrKzsKICAgICAgfQogICAgc3VtKj0xOTsKICAgIHN1bSU9MTAxOwogICAgc3RyMT1zdHIuc3Vic3RyKDQsc3RyLnNpemUoKSk7CiAgICAgLy9jb3V0PDxzdW08PGVuZGw7CiAgIC8vaWYobS5maW5kKHN1bSk9PW0uZW5kKCkpCiAgICAvL3sKICAgICAgICAvL21bc3VtXT1zdHIxOwogICAgICAgIC8vdG90YWwrKzsKICAgIC8vfQogICAgLy9lbHNlCiAgICAvL3sKICAgIC8vaXRyPW0uZmluZChzdW0pOwogICAgLy9pZihzdHIxIT1pdHItPnNlY29uZCl7CiAgICAgZmxhZz0wOwogICAgIHo9LTE7CiAgICBmb3Ioaz0wO2s8PTE5O2srKykKICAgICB7CiAgICAgICAgIGlmKGs9PTApewogICAgICAgICAgICBzdW1maW5hbD1zdW07CiAgICAgICAgIH0KICAgICAgICAgZWxzZXsKICAgICAgICAgc3VtZmluYWw9KHN1bSsoayprKSsoMjMqaykpJTEwMTsKICAgICAgICAgfQogICAgICAgICAvL2NvdXQ8PHN1bTw8ZW5kbDsKICAgICAgICAgaWYobS5maW5kKHN1bWZpbmFsKT09bS5lbmQoKSYmIHo9PS0xKQogICAgICAgICB7CiAgICAgICAgICAgIHo9c3VtZmluYWw7CgogICAgICAgIH0KICAgICAgICAgZWxzZXsKICAgICAgICAgICAgaWYobS5maW5kKHN1bWZpbmFsKSE9bS5lbmQoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICBpdHI9bS5maW5kKHN1bWZpbmFsKTsKICAgICAgICAgICAgaWYoc3RyMT09aXRyLT5zZWNvbmQpCiAgICAgICAgICAgeyAgICAvL2NvdXQ8PHN0cjE8PCJzdHIxIjw8ZW5kbDsKICAgICAgICAgICAgICAgICBmbGFnPTE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQogICAgIH0KICAgICBpZighZmxhZyAmJiB6IT0tMSl7CiAgICAgICAgbVt6XT1zdHIxOwogICAgICAgIHRvdGFsKys7CiAgICAgfQogICAgfS8vfQp9CmVsc2V7CiAgICBzdHIxPXN0ci5zdWJzdHIoNCxzdHIuc2l6ZSgpKTsKICAgIHN1bT0wOwogICAgY291bnQ9MTsKICAgZm9yKGk9NDtpPHN0ci5zaXplKCk7aSsrKSB7CiAgICAgICBzdW0rPWludChzdHJbaV0pKmNvdW50OwogICAgICAvL2NvdXQ8PHN1bTw8InN1bSI8PGVuZGw7CiAgICAgIGNvdW50Kys7CiAgICAgIH0Kc3VtKj0xOTsKICAgIHN1bSU9MTAxOwogIGlmKG0uZmluZChzdW0pIT1tLmVuZCgpKQogICAgewogICAgICAgIGl0cj1tLmZpbmQoc3VtKTsKICAgICAgICBpZihzdHIxPT1pdHItPnNlY29uZCl7CiAgICAgICAgICAgIHRvdGFsLS07CiAgICAgICAgICAgIG0uZXJhc2Uoc3VtKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgIGZvcihrPTE7azw9MTk7aysrKQogICAgIHsKICAgICAgICAgc3VtZmluYWw9KHN1bSsoayprKSsoMjMqaykpJTEwMTsKCiAgICAgICAgIGlmKG0uZmluZChzdW1maW5hbCkhPW0uZW5kKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGl0cjE9bS5maW5kKHN1bWZpbmFsKTsKICAgICAgICAgICAgIGlmKHN0cjE9PWl0cjEtPnNlY29uZCl7CiAgICAgICAgICAgICAgICB0b3RhbC0tOwogICAgICAgICAgICAgICAgbS5lcmFzZShzdW1maW5hbCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICB9CiAgICAgfQogICAgIH0KICAgIH0KfQpjb3V0PDx0b3RhbDw8ZW5kbDsKZm9yKGl0cj1tLmJlZ2luKCk7aXRyIT1tLmVuZCgpOysraXRyKXsKICBjb3V0PDxpdHItPmZpcnN0PDwiOiI8PGl0ci0+c2Vjb25kPDxlbmRsOwp9Cn0KfQoK