//The Theatre Problem Problem Code: THEATRE
#include<bits/stdc++.h>
using namespace std;
struct node{
int freq;
map<char,int> M;
map<int,int> T,S;
int ans;
int sss;
int c;
};
int main(){
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ios_base::sync_with_stdio(false);
cin.tie(0);
int t,ANS=0;
cin>>t;
while(t--){
int n;
cin>>n;
bool fill = false;
vector<pair<char,int>> G[13];
int loss = 0;
int A12=0,A3=0,A6=0,A9=0,B12=0,B3=0,B6=0,B9=0,C12=0,C3=0,C6=0,C9=0,D12=0,D3=0,D6=0,D9=0;
while(n--){
char m;
int a;
cin>>m>>a;
if(m == 'A'){
if(a == 12)A12++;
else if(a == 3)A3++;
else if(a == 6)A6++;
else if(a == 9)A9++;
}else if(m == 'B'){
if(a == 12)B12++;
else if(a == 3)B3++;
else if(a == 6)B6++;
else if(a == 9)B9++;
}else if(m == 'C'){
if(a == 12)C12++;
else if(a == 3)C3++;
else if(a == 6)C6++;
else if(a == 9)C9++;
}else {
if(a == 12)D12++;
else if(a == 3)D3++;
else if(a == 6)D6++;
else if(a == 9)D9++;
}
}
G[12].push_back({'A',A12});
G[12].push_back({'B',B12});
G[12].push_back({'C',C12});
G[12].push_back({'D',D12});
G[3].push_back({'A',A3});
G[3].push_back({'B',B3});
G[3].push_back({'C',C3});
G[3].push_back({'D',D3});
G[6].push_back({'A',A6});
G[6].push_back({'B',B6});
G[6].push_back({'C',C6});
G[6].push_back({'D',D6});
G[9].push_back({'A',A9});
G[9].push_back({'B',B9});
G[9].push_back({'C',C9});
G[9].push_back({'D',D9});
queue<node> Q;
//cout<<G[0][0].first<<" "<<G[0][1].second<<endl;
for(vector<pair<char,int>>::iterator it = G[12].begin();it!=G[12].end();it++){
map<char,int> M;
map<int,int> T,S;
if(it->second == 0)Q.push({it->second,M,T,S,-100,12,1});
else{
M[it->first]++;
T[100]++;
S[12]++;
Q.push({it->second,M,T,S,100*it->second,12,1});
T[100]=0;
T[75]++;
Q.push({it->second,M,T,S,75*it->second,12,1});
T[75]=0;
T[50]++;
Q.push({it->second,M,T,S,50*it->second,12,1});
T[50]=0;
T[25]++;
Q.push({it->second,M,T,S,25*it->second,12,1});
}
}
int aans = 0,k=0;
while(!Q.empty()){
node X = Q.front();
Q.pop();
if(k<X.c){
aans =X.ans;
k = X.c;
}else if(k == X.c){
aans = max(aans,X.ans);
}
if(X.sss == 12){
int hhh=0;
for(vector<pair<char,int>>::iterator it = G[3].begin();it!=G[3].end();it++){
if(X.M[it->first] == 0){
hhh++;
map<char,int> MM = X.M;
if(it->second == 0)Q.push({it->second,MM,X.T,X.S,X.ans-100,3,X.c+1});
else{
MM[it->first]++;
X.S[3]++;
map<int,int> TT;
TT = X.T;
if(X.T[100]==0){TT[100]++;Q.push({it->second,MM,TT,X.S,X.ans+(100*it->second),3,X.c+1});}
TT = X.T;
if(X.T[75]==0){TT[75]++;Q.push({it->second,MM,TT,X.S,X.ans+(75*it->second),3,X.c+1});}
TT = X.T;
if(X.T[50]==0){TT[50]++;Q.push({it->second,MM,TT,X.S,X.ans+(50*it->second),3,X.c+1});}
TT = X.T;
if(X.T[25]==0){TT[25]++;Q.push({it->second,MM,TT,X.S,X.ans+(25*it->second),3,X.c+1});}
}
}
}
}else if(X.sss == 3){
int hhh=0;
for(vector<pair<char,int>>::iterator it = G[6].begin();it!=G[6].end();it++){
if(X.M[it->first] == 0){
hhh++;
map<char,int> MM = X.M;
if(it->second == 0)Q.push({it->second,MM,X.T,X.S,X.ans-100,6,X.c+1});
else{
MM[it->first]++;
X.S[6]++;
map<int,int> TT;
TT = X.T;
if(X.T[100]==0){TT[100]++;Q.push({it->second,MM,TT,X.S,X.ans+(100*it->second),6,X.c+1});}
TT = X.T;
if(X.T[75]==0){TT[75]++;Q.push({it->second,MM,TT,X.S,X.ans+(75*it->second),6,X.c+1});}
TT = X.T;
if(X.T[50]==0){TT[50]++;Q.push({it->second,MM,TT,X.S,X.ans+(50*it->second),6,X.c+1});}
TT = X.T;
if(X.T[25]==0){TT[25]++;Q.push({it->second,MM,TT,X.S,X.ans+(25*it->second),6,X.c+1});}
}
}
}
}else if(X.sss == 6){
int hhh=0;
for(vector<pair<char,int>>::iterator it = G[9].begin();it!=G[9].end();it++){
if(X.M[it->first] == 0){
hhh++;
map<char,int> MM = X.M;
if(it->second == 0)Q.push({it->second,MM,X.T,X.S,X.ans-100,9,X.c+1});
else{
MM[it->first]++;
X.S[9]++;
map<int,int> TT;
TT = X.T;
if(X.T[100]==0){TT[100]++;Q.push({it->second,MM,TT,X.S,X.ans+(100*it->second),9,X.c+1});}
TT = X.T;
if(X.T[75]==0){TT[75]++;Q.push({it->second,MM,TT,X.S,X.ans+(75*it->second),9,X.c+1});}
TT = X.T;
if(X.T[50]==0){TT[50]++;Q.push({it->second,MM,TT,X.S,X.ans+(50*it->second),9,X.c+1});}
TT = X.T;
if(X.T[25]==0){TT[25]++;Q.push({it->second,MM,TT,X.S,X.ans+(25*it->second),9,X.c+1});}
}
}
}
}
}
cout<<aans-loss<<"\n";
ANS+=(aans-loss);
}
cout<<ANS<<"\n";
return 0;
}
Ly9UaGUgVGhlYXRyZSBQcm9ibGVtIFByb2JsZW0gQ29kZTogVEhFQVRSRQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZXsKCWludCBmcmVxOwoJbWFwPGNoYXIsaW50PiBNOwoJbWFwPGludCxpbnQ+IFQsUzsKCWludCBhbnM7CglpbnQgc3NzOwoJaW50IGM7Cn07CmludCBtYWluKCl7CgkvL2ZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsKCS8vZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoMCk7CglpbnQgdCxBTlM9MDsKCWNpbj4+dDsKCXdoaWxlKHQtLSl7CgkJaW50IG47CgkJY2luPj5uOwoJCWJvb2wgZmlsbCA9IGZhbHNlOwoJCXZlY3RvcjxwYWlyPGNoYXIsaW50Pj4gR1sxM107CgkJaW50IGxvc3MgPSAwOwoJCWludCBBMTI9MCxBMz0wLEE2PTAsQTk9MCxCMTI9MCxCMz0wLEI2PTAsQjk9MCxDMTI9MCxDMz0wLEM2PTAsQzk9MCxEMTI9MCxEMz0wLEQ2PTAsRDk9MDsKCQl3aGlsZShuLS0pewoJCQljaGFyIG07CgkJCWludCBhOwoJCQljaW4+Pm0+PmE7CgkJCWlmKG0gPT0gJ0EnKXsKCQkJCWlmKGEgPT0gMTIpQTEyKys7CgkJCQllbHNlIGlmKGEgPT0gMylBMysrOwoJCQkJZWxzZSBpZihhID09IDYpQTYrKzsKCQkJCWVsc2UgaWYoYSA9PSA5KUE5Kys7CgkJCX1lbHNlIGlmKG0gPT0gJ0InKXsKCQkJCWlmKGEgPT0gMTIpQjEyKys7CgkJCQllbHNlIGlmKGEgPT0gMylCMysrOwoJCQkJZWxzZSBpZihhID09IDYpQjYrKzsKCQkJCWVsc2UgaWYoYSA9PSA5KUI5Kys7CgkJCX1lbHNlIGlmKG0gPT0gJ0MnKXsKCQkJCWlmKGEgPT0gMTIpQzEyKys7CgkJCQllbHNlIGlmKGEgPT0gMylDMysrOwoJCQkJZWxzZSBpZihhID09IDYpQzYrKzsKCQkJCWVsc2UgaWYoYSA9PSA5KUM5Kys7CgkJCX1lbHNlIHsKCQkJCWlmKGEgPT0gMTIpRDEyKys7CgkJCQllbHNlIGlmKGEgPT0gMylEMysrOwoJCQkJZWxzZSBpZihhID09IDYpRDYrKzsKCQkJCWVsc2UgaWYoYSA9PSA5KUQ5Kys7CgkJCX0KCQl9CgkJR1sxMl0ucHVzaF9iYWNrKHsnQScsQTEyfSk7CgkJR1sxMl0ucHVzaF9iYWNrKHsnQicsQjEyfSk7CgkJR1sxMl0ucHVzaF9iYWNrKHsnQycsQzEyfSk7CgkJR1sxMl0ucHVzaF9iYWNrKHsnRCcsRDEyfSk7CgkJR1szXS5wdXNoX2JhY2soeydBJyxBM30pOwoJCUdbM10ucHVzaF9iYWNrKHsnQicsQjN9KTsKCQlHWzNdLnB1c2hfYmFjayh7J0MnLEMzfSk7CgkJR1szXS5wdXNoX2JhY2soeydEJyxEM30pOwoJCUdbNl0ucHVzaF9iYWNrKHsnQScsQTZ9KTsKCQlHWzZdLnB1c2hfYmFjayh7J0InLEI2fSk7CgkJR1s2XS5wdXNoX2JhY2soeydDJyxDNn0pOwoJCUdbNl0ucHVzaF9iYWNrKHsnRCcsRDZ9KTsKCQlHWzldLnB1c2hfYmFjayh7J0EnLEE5fSk7CgkJR1s5XS5wdXNoX2JhY2soeydCJyxCOX0pOwoJCUdbOV0ucHVzaF9iYWNrKHsnQycsQzl9KTsKCQlHWzldLnB1c2hfYmFjayh7J0QnLEQ5fSk7CgkJcXVldWU8bm9kZT4gUTsKCQkvL2NvdXQ8PEdbMF1bMF0uZmlyc3Q8PCIgIjw8R1swXVsxXS5zZWNvbmQ8PGVuZGw7CgkJZm9yKHZlY3RvcjxwYWlyPGNoYXIsaW50Pj46Oml0ZXJhdG9yIGl0ID0gR1sxMl0uYmVnaW4oKTtpdCE9R1sxMl0uZW5kKCk7aXQrKyl7CgkJCW1hcDxjaGFyLGludD4gTTsKCQkJbWFwPGludCxpbnQ+IFQsUzsKCQkJaWYoaXQtPnNlY29uZCA9PSAwKVEucHVzaCh7aXQtPnNlY29uZCxNLFQsUywtMTAwLDEyLDF9KTsKCQkJZWxzZXsKCQkJCU1baXQtPmZpcnN0XSsrOwoJCQkJVFsxMDBdKys7CgkJCQlTWzEyXSsrOwoJCQkJUS5wdXNoKHtpdC0+c2Vjb25kLE0sVCxTLDEwMCppdC0+c2Vjb25kLDEyLDF9KTsKCQkJCVRbMTAwXT0wOwoJCQkJVFs3NV0rKzsKCQkJCVEucHVzaCh7aXQtPnNlY29uZCxNLFQsUyw3NSppdC0+c2Vjb25kLDEyLDF9KTsKCQkJCVRbNzVdPTA7CgkJCQlUWzUwXSsrOwoJCQkJUS5wdXNoKHtpdC0+c2Vjb25kLE0sVCxTLDUwKml0LT5zZWNvbmQsMTIsMX0pOwoJCQkJVFs1MF09MDsKCQkJCVRbMjVdKys7CgkJCQlRLnB1c2goe2l0LT5zZWNvbmQsTSxULFMsMjUqaXQtPnNlY29uZCwxMiwxfSk7CQoJCQl9CgkJfQoJCWludCBhYW5zID0gMCxrPTA7CgkJd2hpbGUoIVEuZW1wdHkoKSl7CgkJCW5vZGUgWCA9IFEuZnJvbnQoKTsKCQkJUS5wb3AoKTsKCQkJaWYoazxYLmMpewoJCQkJYWFucyA9WC5hbnM7CgkJCQlrID0gWC5jOwoJCQl9ZWxzZSBpZihrID09IFguYyl7CgkJCQlhYW5zID0gbWF4KGFhbnMsWC5hbnMpOwoJCQl9CgkJCWlmKFguc3NzID09IDEyKXsKCQkJCWludCBoaGg9MDsKCQkJCWZvcih2ZWN0b3I8cGFpcjxjaGFyLGludD4+OjppdGVyYXRvciBpdCA9IEdbM10uYmVnaW4oKTtpdCE9R1szXS5lbmQoKTtpdCsrKXsKCQkJCQlpZihYLk1baXQtPmZpcnN0XSA9PSAwKXsKCQkJCQkJaGhoKys7CgkJCQkJCW1hcDxjaGFyLGludD4gTU0gPSBYLk07CgkJCQkJCWlmKGl0LT5zZWNvbmQgPT0gMClRLnB1c2goe2l0LT5zZWNvbmQsTU0sWC5ULFguUyxYLmFucy0xMDAsMyxYLmMrMX0pOwoJCQkJCQllbHNlewoJCQkJCQlNTVtpdC0+Zmlyc3RdKys7CgkJCQkJCVguU1szXSsrOwoJCQkJCQltYXA8aW50LGludD4gVFQ7CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMTAwXT09MCl7VFRbMTAwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDEwMCppdC0+c2Vjb25kKSwzLFguYysxfSk7fQoJCQkJCQlUVCA9IFguVDsKCQkJCQkJaWYoWC5UWzc1XT09MCl7VFRbNzVdKys7US5wdXNoKHtpdC0+c2Vjb25kLE1NLFRULFguUyxYLmFucysoNzUqaXQtPnNlY29uZCksMyxYLmMrMX0pO30KCQkJCQkJVFQgPSBYLlQ7CgkJCQkJCWlmKFguVFs1MF09PTApe1RUWzUwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDUwKml0LT5zZWNvbmQpLDMsWC5jKzF9KTt9CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMjVdPT0wKXtUVFsyNV0rKztRLnB1c2goe2l0LT5zZWNvbmQsTU0sVFQsWC5TLFguYW5zKygyNSppdC0+c2Vjb25kKSwzLFguYysxfSk7fQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9ZWxzZSBpZihYLnNzcyA9PSAzKXsKCQkJCWludCBoaGg9MDsKCQkJCWZvcih2ZWN0b3I8cGFpcjxjaGFyLGludD4+OjppdGVyYXRvciBpdCA9IEdbNl0uYmVnaW4oKTtpdCE9R1s2XS5lbmQoKTtpdCsrKXsKCQkJCQlpZihYLk1baXQtPmZpcnN0XSA9PSAwKXsKCQkJCQkJaGhoKys7CgkJCQkJCW1hcDxjaGFyLGludD4gTU0gPSBYLk07CgkJCQkJCWlmKGl0LT5zZWNvbmQgPT0gMClRLnB1c2goe2l0LT5zZWNvbmQsTU0sWC5ULFguUyxYLmFucy0xMDAsNixYLmMrMX0pOwoJCQkJCQllbHNlewoJCQkJCQlNTVtpdC0+Zmlyc3RdKys7CgkJCQkJCVguU1s2XSsrOwoJCQkJCQltYXA8aW50LGludD4gVFQ7CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMTAwXT09MCl7VFRbMTAwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDEwMCppdC0+c2Vjb25kKSw2LFguYysxfSk7fQoJCQkJCQlUVCA9IFguVDsKCQkJCQkJaWYoWC5UWzc1XT09MCl7VFRbNzVdKys7US5wdXNoKHtpdC0+c2Vjb25kLE1NLFRULFguUyxYLmFucysoNzUqaXQtPnNlY29uZCksNixYLmMrMX0pO30KCQkJCQkJVFQgPSBYLlQ7CgkJCQkJCWlmKFguVFs1MF09PTApe1RUWzUwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDUwKml0LT5zZWNvbmQpLDYsWC5jKzF9KTt9CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMjVdPT0wKXtUVFsyNV0rKztRLnB1c2goe2l0LT5zZWNvbmQsTU0sVFQsWC5TLFguYW5zKygyNSppdC0+c2Vjb25kKSw2LFguYysxfSk7fQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9ZWxzZSBpZihYLnNzcyA9PSA2KXsKCQkJCWludCBoaGg9MDsKCQkJCWZvcih2ZWN0b3I8cGFpcjxjaGFyLGludD4+OjppdGVyYXRvciBpdCA9IEdbOV0uYmVnaW4oKTtpdCE9R1s5XS5lbmQoKTtpdCsrKXsKCQkJCQlpZihYLk1baXQtPmZpcnN0XSA9PSAwKXsKCQkJCQkJaGhoKys7CgkJCQkJCW1hcDxjaGFyLGludD4gTU0gPSBYLk07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0LT5zZWNvbmQgPT0gMClRLnB1c2goe2l0LT5zZWNvbmQsTU0sWC5ULFguUyxYLmFucy0xMDAsOSxYLmMrMX0pOwoJCQkJCQllbHNlewoJCQkJCQlNTVtpdC0+Zmlyc3RdKys7CgkJCQkJCVguU1s5XSsrOwoJCQkJCQltYXA8aW50LGludD4gVFQ7CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMTAwXT09MCl7VFRbMTAwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDEwMCppdC0+c2Vjb25kKSw5LFguYysxfSk7fQoJCQkJCQlUVCA9IFguVDsKCQkJCQkJaWYoWC5UWzc1XT09MCl7VFRbNzVdKys7US5wdXNoKHtpdC0+c2Vjb25kLE1NLFRULFguUyxYLmFucysoNzUqaXQtPnNlY29uZCksOSxYLmMrMX0pO30KCQkJCQkJVFQgPSBYLlQ7CgkJCQkJCWlmKFguVFs1MF09PTApe1RUWzUwXSsrO1EucHVzaCh7aXQtPnNlY29uZCxNTSxUVCxYLlMsWC5hbnMrKDUwKml0LT5zZWNvbmQpLDksWC5jKzF9KTt9CgkJCQkJCVRUID0gWC5UOwoJCQkJCQlpZihYLlRbMjVdPT0wKXtUVFsyNV0rKztRLnB1c2goe2l0LT5zZWNvbmQsTU0sVFQsWC5TLFguYW5zKygyNSppdC0+c2Vjb25kKSw5LFguYysxfSk7fQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCWNvdXQ8PGFhbnMtbG9zczw8IlxuIjsKCQlBTlMrPShhYW5zLWxvc3MpOwoJfQoJY291dDw8QU5TPDwiXG4iOwoJcmV0dXJuIDA7Cn0=