#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct topic{
char a[601];
char b[601];
char c[601];
char d[601];
};
int max(int a,int b){
if(a >= b){
return a;
}
else{
return b;
}
}
int min(int a,int b){
if(a <= b){
return a;
}
else{
return b;
}
}
char out(int a,int b,int c,int d){
int M = max(a,max(b,max(c,d)));
int m = min(a,min(b,min(c,d)));
if((a == M && b < M && c < M && d < M && ((b == c && c == m) || (c == d && d == m) || (b == d && d == m))) || (a == m && b >m && c >m && d > m && ((b == c && b == M) || (c == d && d == M) || (b == d && d == M)))){
return 'A';
}
else if((b == M && a < M && c < M && d < M && ((a == c && c == m) || (c == d && d == m) || (a == d && d == m))) || (b == m && a >m && c >m && d > m && ((a == c && a == M) || (c == d && d == M) || (a == d && d == M)))){
return 'B';
}
else if((c == M && a < M && b < M && d < M && ((b == a && a == m) || (b == d && d == m) || (a == d && d == m))) || ((c == m && a >m && b >m && d > m) && ((a == b && a == M) || (a == d && d == M) || (b == d && d == M)))){
return 'C';
}
else if((d == M && a < M && b < M && c < M && ((b == a && a == m) || (b == c && c == m) || (a == c && c == m))) || (d == m && a >m && b >m && c > m && ((a == c && a == M) || (c == b && c == M) || (a == b && b == M)))){
return 'D';
}
else{
return 'C';
}
}
int main() {
int T;
scanf("%d\n",&T);
struct topic *V = (struct topic *)malloc(sizeof(struct topic) * T);
if(V == NULL){
printf("Failed malloc!");
return -1;
}
for(int i = 0; i < T; i ++){
scanf("%s\n",V[i].a);
scanf("%s\n",V[i].b);
scanf("%s\n",V[i].c);
scanf("%s\n",V[i].d);
}
for(int i = 0; i < T; i ++){
printf("%c\n",out(strlen(V[i].a),strlen(V[i].b),strlen(V[i].c),strlen(V[i].d)));
}
free(V);
return 0;
}