#include <iostream>
using namespace std;
struct field{
string f;
string s;
int num;
};
void removeNumbersAndCommas(string arr[], int n) {
for (int i = 0; i < n; i++) {
int j = 0; // Index for the current word
// Iterate over each character in the word
while (arr[i][j] != '\0') {
if (arr[i][j] >= '0' && arr[i][j] <= '9') {
// If the character is a number, remove it by shifting the rest of the characters
int k = j;
while (arr[i][k] != '\0') {
arr[i][k] = arr[i][k + 1];
k++;
}
} else if (arr[i][j] == ',') {
// If the character is a comma, remove it by shifting the rest of the characters
int k = j;
while (arr[i][k] != '\0') {
arr[i][k] = arr[i][k + 1];
k++;
}
} else {
j++; // Move to the next character in the word
}
}
}
}
void prints(field arr[], int n, string p[], string q[], string l[], string m[], string b[], int ind){
for(int i =0;i<n;i++){
if(arr[i].num == 1){
p[i] = arr[i%n].f;
b[ind++] = p[i];
q[i] = arr[i%n].s;
b[ind++] = q[i];
}
else if(arr[i].num ==0){
l[i] = arr[i%n].f;
b[ind++] = l[i];
m[i] = arr[i%n].s;
b[ind++] = m[i];
}
else{
p[i] = arr[i%n].f;
b[ind++] = p[i];
q[i] = arr[i%n].f;
b[ind++] = q[i];
l[i] = arr[i%n].f;
b[ind++] = l[i];
m[i] = arr[i%n].f;
b[ind++] = m[i];
}
}
}
void convert(string arr[], int n){
for(int i=0; i<n; i++) {
std::string word = arr[i];
int len = word.length();
std::string new_word = "";
bool first_letter = true;
for(int j=0; j<len; j++) {
if(isdigit(word[j])) {
continue;
}
if(first_letter) {
new_word += toupper(word[j]);
first_letter = false;
}
else {
new_word += tolower(word[j]);
}
}
cout << new_word<<" ";
}
}
void find(field arr[], int n, string b[]){
string p[n], q[n], l[n], m[n];
int ind = 0;
prints(arr, n, p, q, l, m, b, ind);
string r[4*n];
//removeNumbersAndCommas(b, n);
removeNumbersAndCommas(b, n);
for(int i = 0;i<4*n;i++){
for(int j = i+1;j<4*n;j++){
if(b[i]==b[j]){
b[i] = "remove";
}
}
}
for(int i = 0;i<4*n;i++){
if(b[i]!= "remove")
r[i]= b[i];
}
convert(r, n);
//for(int i =0;i<4*n;i++)
//cout<<r[i]<<" ";
}
void f(field arr[], int n){
string b[4*n];
find(arr, n, b);
}
int main() {
// your code goes here
int n;
cin>>n;
field arr[n];
for(int i =0;i<n;i++){
cin>>arr[i].f>>arr[i].s>>arr[i].num;
}
f(arr, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgZmllbGR7CglzdHJpbmcgZjsKCXN0cmluZyBzOwoJaW50IG51bTsKfTsKIAp2b2lkIHJlbW92ZU51bWJlcnNBbmRDb21tYXMoc3RyaW5nIGFycltdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgaiA9IDA7ICAvLyBJbmRleCBmb3IgdGhlIGN1cnJlbnQgd29yZAogCiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB3b3JkCiAgICAgICAgd2hpbGUgKGFycltpXVtqXSAhPSAnXDAnKSB7CiAgICAgICAgICAgIGlmIChhcnJbaV1bal0gPj0gJzAnICYmIGFycltpXVtqXSA8PSAnOScpIHsKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBudW1iZXIsIHJlbW92ZSBpdCBieSBzaGlmdGluZyB0aGUgcmVzdCBvZiB0aGUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgaW50IGsgPSBqOwogICAgICAgICAgICAgICAgd2hpbGUgKGFycltpXVtrXSAhPSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2tdID0gYXJyW2ldW2sgKyAxXTsKICAgICAgICAgICAgICAgICAgICBrKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyW2ldW2pdID09ICcsJykgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNoYXJhY3RlciBpcyBhIGNvbW1hLCByZW1vdmUgaXQgYnkgc2hpZnRpbmcgdGhlIHJlc3Qgb2YgdGhlIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgIGludCBrID0gajsKICAgICAgICAgICAgICAgIHdoaWxlIChhcnJbaV1ba10gIT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgIGFycltpXVtrXSA9IGFycltpXVtrICsgMV07CiAgICAgICAgICAgICAgICAgICAgaysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaisrOyAgLy8gTW92ZSB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHdvcmQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQp2b2lkIHByaW50cyhmaWVsZCBhcnJbXSwgaW50IG4sIHN0cmluZyBwW10sIHN0cmluZyBxW10sIHN0cmluZyBsW10sIHN0cmluZyBtW10sIHN0cmluZyBiW10sIGludCBpbmQpewogCmZvcihpbnQgaSA9MDtpPG47aSsrKXsKCQlpZihhcnJbaV0ubnVtID09IDEpewoJCQlwW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBwW2ldOwoJCQlxW2ldID0gYXJyW2klbl0uczsKCQkJYltpbmQrK10gPSBxW2ldOwogCgkJfQoJCWVsc2UgaWYoYXJyW2ldLm51bSA9PTApewoJCQlsW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBsW2ldOwoJCQltW2ldID0gYXJyW2klbl0uczsKCQkJYltpbmQrK10gPSBtW2ldOwoJCX0KCQllbHNlewoJCQlwW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBwW2ldOwoJCQlxW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBxW2ldOwoJCQlsW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBsW2ldOwoJCQltW2ldID0gYXJyW2klbl0uZjsKCQkJYltpbmQrK10gPSBtW2ldOwoJCX0KCX0KfQogdm9pZCBjb252ZXJ0KHN0cmluZyBhcnJbXSwgaW50IG4pewoJZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgc3RkOjpzdHJpbmcgd29yZCA9IGFycltpXTsKICAgICAgICBpbnQgbGVuID0gd29yZC5sZW5ndGgoKTsKICAgICAgICBzdGQ6OnN0cmluZyBuZXdfd29yZCA9ICIiOwogICAgICAgIGJvb2wgZmlyc3RfbGV0dGVyID0gdHJ1ZTsKIAogICAgICAgIGZvcihpbnQgaj0wOyBqPGxlbjsgaisrKSB7CiAgICAgICAgICAgIGlmKGlzZGlnaXQod29yZFtqXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGZpcnN0X2xldHRlcikgewogICAgICAgICAgICAgICAgbmV3X3dvcmQgKz0gdG91cHBlcih3b3JkW2pdKTsKICAgICAgICAgICAgICAgIGZpcnN0X2xldHRlciA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbmV3X3dvcmQgKz0gdG9sb3dlcih3b3JkW2pdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IG5ld193b3JkPDwiICI7CiAgICB9Cn0Kdm9pZCBmaW5kKGZpZWxkIGFycltdLCBpbnQgbiwgc3RyaW5nIGJbXSl7CglzdHJpbmcgcFtuXSwgcVtuXSwgbFtuXSwgbVtuXTsKCWludCBpbmQgPSAwOwoJcHJpbnRzKGFyciwgbiwgcCwgcSwgbCwgbSwgYiwgaW5kKTsKCXN0cmluZyAgcls0Km5dOwogCi8vcmVtb3ZlTnVtYmVyc0FuZENvbW1hcyhiLCBuKTsKCnJlbW92ZU51bWJlcnNBbmRDb21tYXMoYiwgbik7Cgpmb3IoaW50IGkgPSAwO2k8NCpuO2krKyl7CgkJZm9yKGludCBqID0gaSsxO2o8NCpuO2orKyl7CgkJCWlmKGJbaV09PWJbal0pewoJCQkJYltpXSA9ICJyZW1vdmUiOwoJCQl9CgkJfQoJfQoJZm9yKGludCBpID0gMDtpPDQqbjtpKyspewoJCWlmKGJbaV0hPSAicmVtb3ZlIikKCQlyW2ldPSBiW2ldOwoJfQoJY29udmVydChyLCBuKTsKCS8vZm9yKGludCBpID0wO2k8NCpuO2krKykKCS8vY291dDw8cltpXTw8IiAiOwogCn0KIAp2b2lkIGYoZmllbGQgYXJyW10sIGludCBuKXsKCXN0cmluZyBiWzQqbl07CglmaW5kKGFyciwgbiwgYik7Cn0KaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbjsKCWNpbj4+bjsKCWZpZWxkIGFycltuXTsKCWZvcihpbnQgaSA9MDtpPG47aSsrKXsKCQljaW4+PmFycltpXS5mPj5hcnJbaV0ucz4+YXJyW2ldLm51bTsKCX0KIAoJZihhcnIsIG4pOwoJcmV0dXJuIDA7Cn0=