#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int main(){
int x;
scanf("%d",&x);
while(x--){
long long int t,i,j,a=0;
map<int,string> m;
map<string,int> k;
map<string,int> hash;
scanf("%lld",&t);
string s,s1="";
for(i=0;i<t;i++){
cin>>s;
s1="";
int count=0;
for(j=4;j<s.length();j++){
count+=(int)(s[j])*(j-3);
s1=s1+s[j];
}
count*=19;
count%=101;
if(s[0]=='A'){
if(hash[s1]==1){
continue;
}
if(k[s1]!=-1){
if(m[count].length()==0){
k[s1]=count;
m[count]=s1;
hash[s1]=1;
a++;
}
else{
int y=1;
while(y!=20){
int z=(count+y*y+23*y)%101;
if(m[z].length()==0){
m[z]=s1;
k[s1]=z;
hash[s1]=1;
a++;
break;
}
y++;
}
}
}
}
else{
if(hash[s1]==1 && m[k[s1]].length()!=0){ m[k[s1]]=""; k[s1]=-1; hash[s1]=-1; a--; }
}
}
printf("%lld\n",a);
for(i=0;i<101;i++){
if(m[i].length()!=0)
cout<<i<<":"<<m[i]<<endl;
}
printf("\n");
}
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxtYXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCl7CiAgICBpbnQgeDsKICAgIHNjYW5mKCIlZCIsJngpOwogICAgd2hpbGUoeC0tKXsKICAgICAgIGxvbmcgbG9uZyBpbnQgdCxpLGosYT0wOwogICAgICAgbWFwPGludCxzdHJpbmc+IG07CiAgICAgICBtYXA8c3RyaW5nLGludD4gazsKICAgICAgIG1hcDxzdHJpbmcsaW50PiBoYXNoOwogICAgICAgc2NhbmYoIiVsbGQiLCZ0KTsKICAgICAgIHN0cmluZyBzLHMxPSIiOwogICAgICAgZm9yKGk9MDtpPHQ7aSsrKXsKICAgICAgICAgICBjaW4+PnM7CiAgICAgICAgICAgczE9IiI7CiAgICAgICAgICAgaW50IGNvdW50PTA7CiAgICAgICAgICAgZm9yKGo9NDtqPHMubGVuZ3RoKCk7aisrKXsKICAgICAgICAgICAgICBjb3VudCs9KGludCkoc1tqXSkqKGotMyk7CiAgICAgICAgICAgICAgczE9czErc1tqXTsKICAgICAgICAgICB9CiAgICAgICAgICAgY291bnQqPTE5OwogICAgICAgICAgIGNvdW50JT0xMDE7CiAgICAgICAgICAgaWYoc1swXT09J0EnKXsKICAgICAgICAgICAgICBpZihoYXNoW3MxXT09MSl7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYoa1tzMV0hPS0xKXsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmKG1bY291bnRdLmxlbmd0aCgpPT0wKXsKICAgICAgICAgICAgICAgICBrW3MxXT1jb3VudDsKICAgICAgICAgICAgICAgICBtW2NvdW50XT1zMTsKICAgICAgICAgICAgICAgICBoYXNoW3MxXT0xOwogICAgICAgICAgICAgICAgIGErKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBpbnQgeT0xOwogICAgICAgICAgICAgICAgd2hpbGUoeSE9MjApewogICAgICAgICAgICAgICAgICAgaW50IHo9KGNvdW50K3kqeSsyMyp5KSUxMDE7IAogICAgICAgICAgICAgICAgICAgaWYobVt6XS5sZW5ndGgoKT09MCl7CiAgICAgICAgICAgICAgICAgICBtW3pdPXMxOwogICAgICAgICAgICAgICAgICAga1tzMV09ejsKICAgICAgICAgICAgICAgICAgIGhhc2hbczFdPTE7CiAgICAgICAgICAgICAgICAgICBhKys7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIHkrKzsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlewogICAgICAgICAgICBpZihoYXNoW3MxXT09MSAmJiBtW2tbczFdXS5sZW5ndGgoKSE9MCl7IG1ba1tzMV1dPSIiOyBrW3MxXT0tMTsgaGFzaFtzMV09LTE7IGEtLTsgfQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgfQogICAgICB9CiAgICAgICAgIHByaW50ZigiJWxsZFxuIixhKTsKICAgICAgICAgZm9yKGk9MDtpPDEwMTtpKyspewogICAgICAgICAgICBpZihtW2ldLmxlbmd0aCgpIT0wKQogICAgICAgICAgICAgICBjb3V0PDxpPDwiOiI8PG1baV08PGVuZGw7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgIH0KICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgIAogICAgICAgICAgICAgIH0KICAgICAgIAoK