#include <bits/stdc++.h>
using namespace std;
set<char> intersect(set<char> a,set<char> b){
set<char> tmp;
for(char c:b)
if(a.find(c)!=a.end())
tmp.insert(c);
return tmp;
}
void printset(set<char> s){
for(char c:s)
cout<<c<<' ';
cout<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
vector<vector<string> > a(3,vector<string>(3));
set<char> chars_set,faulty_left,faulty_right;
int flag_left=0,flag_right=0;
for(int i=0;i<=((int)'L'-(int)'A');i++)
chars_set.insert((char)((int)'A'+i));
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
string s;
cin>>ws>>s;
a[i][j]=s;
}
if(a[i][2]=="down")
swap(a[i][0],a[i][1]),a[i][2]="up";
}
for(int i=0;i<3;i++){
if(a[i][2]=="even"){
for(char c:a[i][0])
chars_set.erase(c);
for(char c:a[i][1])
chars_set.erase(c);
}
else{
set<char> faulty_set,chars_set2;
for(char c:a[i][0])
faulty_set.insert(c);
if(!flag_left)
faulty_left=faulty_set,flag_left=1;
else
faulty_left=intersect(faulty_set,faulty_left);
faulty_set.clear();
for(char c:a[i][1])
faulty_set.insert(c);
if(!flag_right)
faulty_right=faulty_set,flag_right=1;
else
faulty_right=intersect(faulty_set,faulty_right);
}
}
set<char> ch;
ch=intersect(faulty_left,chars_set);
if(ch.size())chars_set=ch;
ch=intersect(faulty_right,chars_set);
if(ch.size())chars_set=ch;
char anschar=(char)*(chars_set.begin());
cout<<anschar<<" is the counterfeit coin and it is";
int ans=0;
for(int i=0;i<3;i++){
if(ans)break;
for(int j=0;j<3;j++){
if(a[i][j].find(anschar)!=string::npos){
if(j==0){
if(a[i][2]=="up")ans=2;
else ans=1;
}
else if(j==1){
if(a[i][2]=="up") ans=1;
else ans=1;
}
break;
}
}
}
cout<<' '<<(ans==1?"light":"heavy")<<'.'<<endl;
}
return 0;
}
Comments
Post a Comment